I started using xmake a few days ago. Not sure if I will use it for new projects (due to CMake being the standard) but I definitely want to. The workflow is amazing and super fast. You just run `xmake create` and it creates your project. Then you can just run xmake and boom, it compiles it in an instant, linking dependencies, without needing to create a CMakeLists.txt, adding a submodule for every dependency you use, including your dependency's cmake file, blah blah (xmake has its own xrepo tool which allows for dependency management in a MUCH easier way)
Can it build a C++ SFML application on windows?<p>I am now annoyed by the claims of those build systems. My own experience is using a visual studio project manually, and writing classic makefile for linux. Those are things I can't avoid learning.<p>The root of the problem is that windows/unix do things differently, but that doesn't change anyone's understanding of how a compiler/linker works.<p>I am against those build system: I need to learn how to use them, and I need to understand how they manage to "reunite" different toolchains.<p>Generally, I would guess I spend less time building something on each system with either visual studio/makefiles, than using a meta-build system.<p>Microsoft is at fault for making things differently, of course, but attempts to reunite platforms are often quite misguided<p>Of course, people who write libraries need those build systems, obviously, although I don't know what any other build system does better than CMake.
Isn't zig good tool for this as well? I've seen it being used in passing [0] - is this reasonable thing to do and we may see more of it?<p>[0] <a href="https://github.com/ggerganov/llama.cpp/blob/master/build.zig">https://github.com/ggerganov/llama.cpp/blob/master/build.zig</a>
I've been always wondering why do we even need specialized build tools and why does the community around every new programming language or framework feel obliged to invent their own, implemented in their native language. Why can't we just write a script in Python or any other scripting language which would fetch the deps, invoke the compilers, run the tests and spit out the package?<p>I can't answer myself because I only have basic theoretical idea of what build tools do, I have always mostly been using IDEs like VisualStudio which do everything behind the scenes in a press of a button.
Xmake gets posted here once in a while, here are some previous discussions:<p><a href="https://news.ycombinator.com/item?id=19610459">https://news.ycombinator.com/item?id=19610459</a><p><a href="https://news.ycombinator.com/item?id=22583147">https://news.ycombinator.com/item?id=22583147</a><p><a href="https://news.ycombinator.com/item?id=30696061">https://news.ycombinator.com/item?id=30696061</a>
Does it scale for large monorepos? That's where CMake hits its limits. With tremendous effort we switched to Bazel, which has brought down configure+build times to less than 1/10.
Space of software projects' names are so limited...<p>There is (was) xmake already: build tool used by XFree86/x.org before x.org modularization. It was very good, much better than auto*-tools, but didn't get enough traction outside XFree86 project.
For a brief moment I thought it was about Premake [1] under a different name, but after checking xmake's Discussions [2] I have found the answer I was looking for.<p>[1] <a href="https://en.wikipedia.org/wiki/Premake" rel="nofollow">https://en.wikipedia.org/wiki/Premake</a><p>[2] <a href="https://github.com/xmake-io/xmake/discussions/1863">https://github.com/xmake-io/xmake/discussions/1863</a>
I'm sorry, I cannot treat seriously project with these installation instructions:<p>---
curl -fsSL <a href="https://xmake.io/shget.text" rel="nofollow">https://xmake.io/shget.text</a> | bash
---<p>System packet manager? What is it? Never heard about it.<p>It is like copying "src" directory to new name with each change in sources instead using version control system.
It seems that C developers tend to use Turing-complete scripts for building instead of a declarative language. Using scripts means that build configuration cannot be processed by automated tools for extraction of information or modification. Why don't you want to use declarative build configuration?
Looks very full-featured, surprised I haven't heard of it. Might finally realise simple (Apple-based) command-line builds for macOS/iOS:<p><a href="https://xmake.io/#/guide/project_examples?id=iosmacos-program" rel="nofollow">https://xmake.io/#/guide/project_examples?id=iosmacos-progra...</a><p>Including signing. It still relies on xcode of course, but if you don't actually need to <i>use</i> xcode to configure or build, that's a big plus.
re: C/C++ development: anybody using conda/pixi for dependency management? Here's an example of compiling a C++ SDL program using pixi and the SDL dependency from conda-forge [1].<p>Seems viable as a replacement for things like vckpg [2] which only builds from source.<p>I'm still researching this but it seems like rattler [3] is the tool to use to build/publish packages. The supported repos are: prefix.dev's own hosting, anaconda.org, artifactory or a self-hosted server.<p>--<p>1: <a href="https://github.com/prefix-dev/pixi/blob/main/examples/cpp-sdl/pixi.toml#L15">https://github.com/prefix-dev/pixi/blob/main/examples/cpp-sd...</a><p>2: <a href="https://github.com/microsoft/vcpkg">https://github.com/microsoft/vcpkg</a><p>3: <a href="https://prefix-dev.github.io/rattler-build/latest/authentication_and_upload/#uploading-packages" rel="nofollow">https://prefix-dev.github.io/rattler-build/latest/authentica...</a>
Looks pretty neat. Probably a lot easier to use than Bazel, unless you need to compile C++ and Java or TypeScript, e.g. for building Android or web apps with a native dependency all from source.
please explain how you can truly support something like 40<i>40</i>20 different OS, architecture, toolchain, and programming languages without automated regression testing every single one of them. and then please tell me what system can run this testing because i would love to see that.
If I were to still use C/C++, i'd definitely use xmake, without hesitating<p>I wish more people would embrace it over cmake, I despise cmake so much..<p>I fully moved to D however, the experience here is night and day, the module system alone makes me not miss C/C++, at all
sadly so much is tied into cmake with all its eccentricities of being a weird custom macro language, hard to see using anything besides cmake unless I stop using C
Gotta be That Guy:<p>Some of the wisdom from the recent XZ backdoor incident was that cmake was a contributing factor, due to its internal complexity.<p>Some of the current trend is to <i>strip out autotools and cmake</i>, and go back to the basics, because modern OS support is a subset of what was relevant 20 years ago.