>>In addition, I don't like cmake's DSL syntax, which is very tedious and difficult to maintain.
I don't agree that Cmake is difficult and hard to maintain.
I do believe that most people write complete messes in their makefile so that they become brittle and hard to maintain.
The so called "modern Cmake" approach, with its declarative approach to project files, is delightful to work with, unlike the old and beaten imperative based path of forcing Cmake to be a glorified scripting language when it never was.
Xmake does not depend on msvc and msbuild at all, it has its own independent build system, and the build speed is as fast as ninja, and on windows, it can use other compilers to compile the project, such as: clang, tinycc ..
xmake is a lightweight cross-platform build utility based on Lua. It uses xmake.lua to maintain project builds. Compared with makefile/CMakeLists.txt, the configuration syntax is more concise and intuitive. It is very friendly to novices and can quickly get started in a short time. Let users focus more on actual project development.
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.
1. No docs now, you need see source codes. e.g. tests/*.lua
2. Perhaps you need call coroutine.yield or other coroutine/wait methods to program:loop() to support two event loops.
https://plugins.jetbrains.com/plugin/17406-xmake