391 karma · joined January 1, 2016
and xmake = make + project generator + package manager
In addition, I don't like cmake's DSL syntax, which is very tedious and difficult to maintain.
It can compile the project directly like Make/Ninja, or generate project files like CMake/Meson, and it also has a built-in package management system to help users solve the integrated use of C/C++ dependent libraries.
xmake f --menu
https://github.com/tboox/xmake add_requires("tbox >1.6.1", "libuv master", "vcpkg::ffmpeg", "brew::pcre2/libpcre2-8")
add_requires("conan::OpenSSL/1.0.2n@conan/stable", {alias = "openssl", optional = true, debug = true})
target("test")
set_kind("binary")
add_files("src/*.c")
add_packages("tbox", "libuv", "vcpkg::ffmpeg", "brew::pcre2/libpcre2-8", "openssl") add_requires("libuv master", "ffmpeg", "zlib 1.20.*", "tbox >1.6.1")
target("test")
set_kind("binary")
add_files("src/*.c")
add_packages("libuv", "ffmpeg", "tbox", "zlib") xmake project -k makefile
xmake project -k vs2019
xmake project -k cmakelist
xmake project -k vsxmake
...Also I don't like the syntax of python
And it also supports self-built distributed repositories and third-party repositories (e.g. vcpkg, conan, clib, homebrew).
add_requires("libuv master", "ffmpeg", "zlib 1.20.*")
add_requires("tbox >1.6.1", {optional = true, debug = true})
target("test")
set_kind("shared")
add_files("src/*.c")
add_packages("libuv", "ffmpeg", "tbox", "zlib")Unless a function has only two lines of code.
printf("Hello World!\n");
int x = 7;
printf("%d!\n", x);
return 0;
This is a very serious restriction for me.