xmake简介
Xmake 是一个基于 Lua 的轻量级跨平台构建工具。
它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。
它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。
xmake安装
- Ubuntu环境安装
sudo add-apt-repository ppa:xmake-io/xmake
sudo apt update
sudo apt install xmake
xmake命令
- 构建工程
xmake
- 运行程序
xmake run example
- 调试程序:会调用本地的调试器,如linux环境下调用gdb。
xmake run -d example
xmake语法
示例1
- 基本工程构建_1:构建一个test目标,目标类型是binary,目标包含了src下的所有c文件。
-- 注释符号--
-- test作用域开始
target("test")
add_files("src/*.c")
set_kind("binary")
target_end()
-- test作用域结束,可以省去结束
- 设置目标类型:
- set_kind(“binary”):目标类型设置为二进制程序
- set_kind(“static”):目标类型设置为静态库程序
- set_kind(“shared”):目标类型设置为动态库程序
示例2
- 基本工程构建_2:构建一个example目标,目标类型是binary(二进制可执行程序),目标文件依赖动态链接库module_1和动态链接库module_2。
set_languages("c99", "cxx17")
-- 构建动态链接库module_a
target("module_a")
set_kind("shared")
add_files("module_1/*.cpp")
-- 构建动态链接库module_s
target("module_s")
set_kind("shared")
add_files("module_2/*.cpp")
-- 构建可执行程序example
target("example")
set_kind("binary") -- 目标文件为二进制文件
add_deps("module_1")-- 增加动态链接库的依赖
add_deps("module_2")-- 增加动态链接库的依赖
add_files("*.cpp")
示例3
- 基本工程构建_3:单独对src和example进行单独构建,并通过构建脚本进行联合。
set_project("xmake_project") -- 设置工程名
set_version("1.5.1") -- 设置工程版本
add_rules("mode.debug", "mode.release")
set_languages("c99", "cxx14")
set_warnings("all", "error")
add_cxxflags("-DNDEBUG") -- 添加编译选项
add_includedirs("./include/sample") -- 设置头文件的搜索目录
add_installfiles("include/(sample/module_1/*.h)", {prefixdir = "include"})
add_installfiles("include/(sample/module_2/*.h)", {prefixdir = "include"})
if is_mode("debug") then
set_symbols("debug")
set_optimize("none")
print('debug mode')
end
if is_mode("release") then
set_optimize("fastest") -- 设置优化级别为最快运行速度
set_strip("all")
print('release mode')
end
includes("src", "example") -- 包含sub-project路径
- add_includedirs():设置头文件的搜索目录。
- add_installfiles():指定安装各种类型的文件到指定的安装目录。
- add_installfiles("src/.h"):安装文件到/usr/local/.h。
- add_installfiles("src/.h", {prefixdir = “include”}):安装文件到/usr/local/include/.h。
- add_installfiles("src/(tbox/.h)", {prefixdir = “include”}):安装文件到/usr/local/include/tbox/.h。src目录后的括号用于提取tbox/*.h子目录结构。
- set_optimize():设置优化级别。可选参数如下。
- 添加编译选项
- add_cxxflags():仅对c++代码添加编译选项。
- add_cxflags():同时对c/c++代码添加编译选项。
- 添加链接选项
- add_ldflags(“-L/xxx”, “-lxxx”):添加静态链接选项。
- add_shflags(“xxx”):添加动态链接选项。
- 包含sub_project路径:includes()。
其他
- 设置指定目标的编译平台:set_plat()。
- 设置指定目标的编译构架:set_arch()。
- 设置文件的安装目录:set_installdir()。类似于add_installfiles()。