Xmake配置
xmake.lua
lua
-- 自动更新vscode的配置,使得clangd能够进行头文件跳转,让下面add_includedirs能够进行代码跳转
add_rules("plugin.compile_commands.autoupdate", {outputdir = ".vscode"})
add_rules("mode.debug", "mode.release")
target("helloworld")
set_kind("binary")
-- binary(默认)可执行文件
-- static 静态库
-- shared 动态链接库
-- headeronly 纯头文件
-- phony 伪target,仅用于添加一些可继承的flag、协调target编译顺序,不会执行编译链接操作
add_files("src/*.cpp") -- 构建src目录下一层目录所有的cpp文件
add_files("src/**.cpp") -- 构建src目录下所有的cpp文件
-- add_files 加入的所有源文件都会被编译为中间文件,然后链接到目标文件中
-- .c后缀,自动调用C编译器编译
-- .cpp/.cc/.cxx后缀的文件会调用C++编译器编译
-- .cu后缀的文件会调用CUDA编译器编译
-- .asm/.S后缀的文件会调用汇编器汇编
-- 编译器参数:
-- add_cflags():添加C编译器的编译参数
-- add_cxxflags():添加C++编译器的编译参数
-- add_cuflags():添加CUDA编译器的编译参数
-- add_asflags():添加汇编语言的汇编参数
-- add_cxflags():同时对C编译器和C++编译器启用的编译参数
-- add_ldflags():添加二进制文件链接参数
-- add_arflags():添加静态库生成参数
-- add_shflags():添加动态链接库生成参数
-- 添加头文件目录
-- add_includedirs("src/include")
-- 添加链接目录与链接库:
-- add_linkdirs("src/lib") 链接器查找第三方链接库的目录
-- add_links("myext") 第三方链接库名
-- add_syslinks("pthread", "m") 在add_links之后才进行链接
-- 添加预定义宏
-- add_defines("MYMACRO=hello")
示例1:
c
Project
|-- src
| |-- include
| | `-- add.h
| |-- lib
| | `-- add.cpp
| `-- main.cpp
`-- xmake.lua
xmake.lua
lua
add_rules("plugin.compile_commands.autoupdate", {outputdir = ".vscode"})
add_rules("mode.debug", "mode.release")
target("Project")
set_kind("binary")
add_files("src/**.cpp") -- src目录下所有的cpp文件加入编译
add_includedirs("src/include") -- 头文件目录
add_linkdirs("src/lib") -- 添加链接目录与链接库
main.cpp
c++
#include <iostream>
#include <add.h>
using namespace std;
int main(int argc, char** argv)
{
cout << "hello world!" << endl;
std::cout << add(1, 2) << std::endl;
return 0;
}
add.h
c++
#include "iostream"
using namespace std;
int add(int a, int b);
add.cpp
c++
#include "add.h"
int add(int a, int b) {
return a + b;
}