大伙有做 C/C++ 开发的可以试试哦。。
XMake 是一个基于 Lua 的轻量级跨平台自动构建工具,支持在各种主流平台上构建项目
xmake 的目标是开发者更加关注于项目本身开发,简化项目的描述和构建,并且提供平台无关性,使得一次编写,随处构建
它跟 cmake、automake、premake 有点类似,但是机制不同,它默认不会去生成 IDE 相关的工程文件,采用直接编译,并且更加的方便易用 采用 lua 的工程描述语法更简洁直观,支持在大部分常用平台上进行构建,以及交叉编译
并且 xmake 提供了创建、配置、编译、打包、安装、卸载、运行等一些 actions,使得开发和构建更加的方便和流程化。
不仅如此,它还提供了许多更加高级的特性,例如插件扩展、脚本宏记录、批量打包、自动文档生成等等。。
如果你想要了解更多,请参考:
bash <(curl -fsSL https://raw.githubusercontent.com/xmake-io/xmake/master/scripts/get.sh)
bash <(wget https://raw.githubusercontent.com/xmake-io/xmake/master/scripts/get.sh -O -)
Invoke-Expression (Invoke-Webrequest 'https://raw.githubusercontent.com/xmake-io/xmake/master/scripts/get.ps1' -UseBasicParsing).Content
官方的 xmake 包管理仓库: xmake-repo
$ xmake
$ xmake run console
$ xmake run -d console
$ xmake f -p [windows|linux|macosx|android|iphoneos ..] -a [x86|arm64 ..] -m [debug|release]
$ xmake
$ xmake f --menu
$ xmake project -k vs2017 -m "debug,release"
$ xmake project -k cmakelists
$ xmake project -k compile_commands
$ xmake m -b # 开始记录
$ xmake f -p iphoneos -m debug
$ xmake
$ xmake f -p android --ndk=~/files/android-ndk-r16b
$ xmake
$ xmake m -e # 结束记录
$ xmake m . # 回放命令
$ xmake l ./test.lua
$ xmake l -c "print('hello xmake!')"
$ xmake l lib.detect.find_tool gcc
$ xmake doxygen [srcdir]
请到插件仓库进行下载安装: xmake-plugins.
Debug 和 Release 模式:
add_rules("mode.debug", "mode.release")
target("console")
set_kind("binary")
add_files("src/*.c")
if is_mode("debug") then
add_defines("DEBUG")
end
下载和使用在xmake-repo的依赖包:
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")
下载和使用第三方包管理器的依赖包:
add_requires("brew::pcre2/libpcre2-8", {alias = "pcre2"})
add_requires("conan::OpenSSL/1.0.2n@conan/stable", {alias = "openssl"})
target("test")
set_kind("shared")
add_files("src/*.c")
add_packages("pcre2", "openssl")
查找和使用本地已安装的包:
target("test")
set_kind("shared")
add_files("src/*.c")
on_load(function (target)
target:add(find_packages("zlib", "openssl", "brew::pcre2/libpcre2-8", "conan::OpenSSL/1.0.2n@conan/stable"))
end)