配置
安装
windows
powershell执行
Invoke-Expression (Invoke-Webrequest 'https://xmake.io/psget.text' -UseBasicParsing).Content
linux
sudo add-apt-repository ppa:xmake-io/xmake && sudo apt update
sudo apt install xmake
使用
可执行文件
创建
xmake create -language=项目类型 --project=项目名
- 示例, 创建c工程名为hello
xmake create --language=c --project=hello
构建
xmake
- 示例, 构建上一步hello工程
运行
xmake run (项目名)
库文件
xmake create --language=语言 --template=类型 项目名
创建C++动态库
- 示例, 创建test_api库
xmake create --language=c++ --template=shared test_api
// foo.h
#ifdef __cplusplus
extern "C" {
#endif
#if defined(_WIN32)
#define __export __declspec(dllexport)
#elif defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
#define __export __attribute__((visibility("default")))
#else
#define __export
#endif
__export int add(int a, int b);
#ifdef __cplusplus
}
#endif
// foo.cpp
#include "foo.h"
int add(int a, int b) {
return a + b;
}
-- xmake.lua
add_rules("mode.debug", "mode.release")
-- 目标文件
target("foo")
-- 类型为动态库
set_kind("shared")
-- 添加源文件
add_files("src/foo.cpp")
-- 目标文件
target("test_api")
-- 类型为二进制
set_kind("binary")
-- 添加依赖
add_deps("foo")
-- 添加源文件
add_files("src/main.cpp")
构建
xmake
链接库
修改xmake.lua
-- 链接库名称
add_links("库名")
-- 链接库所在目录
add_linkdirs("目录")
- 示例, 链接libfoo.so库
创建项目link_test
拷贝test_api项目中libfoo.so与foo.h文件
修改main.cpp
#include <iostream>
#include "foo.h"
int main(int argc, char** argv) {
std::cout << add(0xFF, 0xAA) << std::endl;
return 0;
}
修改xmake.lua
add_rules("mode.debug", "mode.release")
target("link_test")
set_kind("binary")
add_files("src/*.cpp")
add_links("foo")
add_linkdirs("lib")
构建
指令
编译指令
- 用于设置 C 语言编译标志
add_cflags()
- 用于设置 C++ 编译标志
add_cxxflags()
- 用于设置链接器标志
add_ldflags()
- 用于添加编译时的宏定义
add_defines()
target("myapp")
set_kind("binary") -- 设置目标类型为可执行文件
add_files("src/*.c") -- 添加源文件
-- 添加编译指令
add_cflags("-Wall", "-O2") -- 添加C编译标志
add_cxxflags("-std=c++11", "-O2") -- 添加C++编译标志
add_ldflags("-lm") -- 添加链接器标志这里链接数学库libm
add_defines("MY_DEFINE=1") -- 添加宏定义 MY_DEFINE