| ▲ | gavinray 4 hours ago | |
The least painful C/C++ build tool I've used is xmake https://github.com/xmake-io/xmake The reason why I like it (beyond ease-of-use) is that it can spit out CMakeLists.txt and compile_commands.json for IDE/LSP integration and also supports installing Conan/vcpkg libraries or even Git repos.
Then you use it like | ||
| ▲ | ethin 4 hours ago | parent | next [-] | |
I would happily switch to it in a heartbeat if it was a lot more well-documented and if it supported even half of what CMake does. As an example of what I mean, say I want to link to the FMOD library (or any library I legally can't redistribute as an SDK). Or I want to enable automatic detection on Windows where I know the library/SDK is an installer package. My solution, in CMake, is to just ask the registry. In XMake I still can't figure out how to pull this off. I know that's pretty niche, but still. The documentation gap is the biggest hurtle. A lot of the functions/ways of doing things are poorly documented, if they are at all. Including a CMake library that isn't in any of the package managers for example. It also has some weird quirks: automatic/magic scoping (which is NOT a bonus) along with a hack "import" function instead of using native require. All of this said, it does work well when it does work. Especially with modules. | ||
| ▲ | NekkoDroid 32 minutes ago | parent | prev | next [-] | |
Similar to premake I have never been a fan of the global state for defining targets. Give me an object or some handle that I call functions on/pass to functions. CMake at some point ended up somewhat right with that to going to target based defining for its stuff and since I've really learned it I have been kinda happy with it. | ||
| ▲ | eqvinox 16 minutes ago | parent | prev | next [-] | |
actually looks very similar to Meson [https://mesonbuild.com/], which is getting a lot of traction in FOSS [https://mesonbuild.com/Users.html] | ||
| ▲ | delta_p_delta_x 4 hours ago | parent | prev | next [-] | |
Agreed, xmake seems very well-thought-out, and supports the most modern use-cases (C++20 named modules, header unit modules, and `import std`, which CMake still has a lot of ceremony around). I should switch to it. | ||
| ▲ | IshKebab 2 hours ago | parent | prev [-] | |
I've had some experience with this but it seems to be rather slow, very niche and tbh I can't see a reason to use it over CMake. | ||