Xmake: A cross-platform build utility based on Lua
Xmake, a Lua-based cross‑platform build tool for C and C++, is drawing attention as a simpler alternative to incumbents like CMake, Meson, and Bazel, bundling build orchestration, dependency management, and caching into a single binary. Commenters highlight its fast workflow, integrated package manager (xrepo), and advanced C++20 modules support, while others question introducing yet another tool into an already fragmented C/C++ ecosystem and debate trade‑offs between declarative DSLs and fully programmable build scripts. Broader themes include the difficulty of cross‑platform dependency management, the dominance yet clunkiness of CMake, and concerns around installation practices such as curl‑piped shell scripts.
Overall impressions of Xmake
- Many commenters find Xmake’s UX appealing: simple project creation, fast builds, and integrated dependency management via
xrepo. - Some already use it for personal projects while retaining CMake for work due to ecosystem inertia and tooling support.
- A few see it as a strong “if I still wrote C/C++ I’d use this” contender.
Workflow and usability
- Praised for one-command project setup (
xmake create) and straightforward build/run flow. - Single self-contained binary is viewed as a plus versus tools requiring Python or larger stacks.
- Claimed to support iOS/macOS command-line builds, including signing, while avoiding direct use of Xcode.
Comparison with CMake and other build systems
- CMake is seen as the de facto standard across platforms, especially for C++, largely due to IDE integration and first-mover advantage, but is widely described as ugly, complex, and fragile.
- Some prefer Meson for its declarative DSL and lower cognitive load; others prefer full languages (Lua, Python) for flexibility, warning that the “escape hatch” can become a liability in large projects.
- Bazel is mentioned as a win for very large monorepos due to remote caching and build farms, but considered overkill for most.
- Zig’s build system is cited as another integrated alternative for C/C++-heavy projects.
Dependency management debates
- Xmake’s
xrepois praised as simpler than juggling CMake + submodules + external package managers. - Extensive discussion around CMake + vcpkg:
- Some argue modern CMake/vcpkg flows are not that hard and provide private registries, overlay ports, and binary caching.
- Others report frequent friction: missing packages, custom patches, special build flags, huge storage/time overhead for large dependency stacks.
- Submodules are criticized as fragile but still widely used; some defend them as convenient for local patching.
C++ modules support
- One contributor states Xmake’s C++20 modules support (including
import std, multiple compilers, header units, and module-aware packages) is ahead of CMake’s current state. - Others are skeptical of any tool claiming “full” module support, noting broader ecosystem and tooling gaps.
Installation and safety concerns
- Pipe-from-curl installer is criticized as unsafe and hard to audit; some argue package managers or explicit stepwise instructions are preferable.
- Defenders note not all users have up-to-date system packages, and Xmake is packaged in some distros.