使用Xmake-API来构建项目

前言

 上一文我们介绍了Xmake的基本命令,使用Xmake的命令来构建项目基本等同于使用直接使用g++来构建,所以只有在项目比较简单时我们可以选择使用命令来构建,但是当项目比较复杂时,可以使用xmake.lua来配置项目的构建过程。

1.常用API简介

 对于Xmake的入门使用者来说,只要学会几个简单的API就可以非常方便的配置我们的项目,其中,最常用到的几个API分别是

  • set_kind: 设置target类型
  • add_files: 添加需要编译的源文件/静态库
  • add_links : 添加需要链接的动态库
  • add_includedirs : 添加头文件搜索路径
  • add_linkdirs: 添加动态库搜索路径
  • add_ldflags : 添加链接参数
  • add_cxxflags: 添加C++编译选项
  • add_cflags: 添加C编译选项
  • add_cxflags: 添加C/C++编译选项

2.API使用

 在使用Xmake新创建的工程中,Xmake直接创建了一个xmake.lua,里面的内容是这样的:

add_rules("mode.debug", "mode.release")

target("hello")
    set_kind("binary")
    add_files("src/*.cpp")

 其中,add_rules是设置构建模式,这里设置了debug模式和release模式

set_kind这里指定了编译出的target是二进制文件,即可执行程序

add_files将src下面的所有cpp文件头添加进来了,add_files支持通配符

下面介绍我们构建中的需求如何通过这些API来实现

1.添加编译源文件

 如上面的例子所示,当我们需要将源文件添加编译范围中,只需要通过add_files把文件添加进来即可,add_files支持的文件类型如下:

Supported source file types Description
.c/.cpp/.cc/.cxx c++ file
.s/.S/.asm assembly files
.m/.mm objc file
.swift swift file
.go golang file
.o/.obj object File
.a/.lib static library files, will automatically merge the library to the target program
.rc msvc resource file
.manifest windows manifest file
.dll windows export file
.ld/.lds linker scripts file for gcc/clang
.map/.ver version script file for gcc/clang

 其中,通配符*表示匹配当前目录下的文件,**表示匹配多级目录下的文件。

2.添加头文件搜索路径

 在添加头文件的搜索路径时,可以使用add_includedirs,当然,也可以通过add_cxflagsadd_mxflags等接口直接设置,这也是可以的。

3.添加动态库

 如果需要链接动态库时,可以通过add_links来将添加动态库,这里需要添加的动态库需要把开头lib以及后缀.so都去掉。

4.添加动态库搜索路径

 通过add_linkdirs来添加动态库的搜索路径,通过还要通过add_includedirs来将头文件搜索路径添加进来。

5. 添加外部包

 Xmake支持通过add_requires来添加依赖包,我们可以通过添加版本号来限制包的版本,也可以不写版本号来使用最新版本,例如,通常情况下我们不需要其太复杂的用法

add_requires("tbox 1.6.*", "pcre 8.x", "libpng ^1.18")
add_requires("libpng ~1.16", "zlib 1.1.2 || >=1.2.11 <1.3.0")
add_requires("tbox", "libpng", "zlib")

6. Xmake配置的继承

 此处所说的继承是指,如果一个文件夹中包含了好几个xmake管理的项目,那么父目录中的xmake配置将会继承到到子目录的xmake项目中,例如在父目录中通过add_includedirs添加了头文件搜索路径,那么子目录中的项目不需要重复添加,更高级的用法包括定义全局变量,宏定义等等,大大方便了项目的管理。

hello
├── src
│   ├── main.cpp
│   └── subhello
│       ├── src
│       │   └── main.cpp
│       └── xmake.lua
└── xmake.lua

 初级Xmake用户可以通过上面介绍的API完成一个普通项目的构建,如果项目更为复杂,那可能需要用到更为高级的用法,可以参阅Xmake的官方文档来研究更复杂的用法。

猜你喜欢

转载自blog.csdn.net/dddgggd/article/details/129019373