【CMake】CMake使用笔记
记录学习CMake中碰到的一些问题和笔记
ps:CMake相比xmake来说确实太繁琐,但还是得学习🍭
现代CMake的命令行构建
在“古代”CMake中,我们想要构建项目要这样:
1 | mkdir build |
太啰嗦了,最后一步可能还用的不是make命令。不过在现代CMake中,提供了更为方便的 -B 和 --build,如下:
1 | cmake -B build # 用于生成构建目录。-B 参数后面跟的是一个目录名,这里指定为 build |
这样省去了创建build目录等繁琐的操作,还统一了不同平台上的构建命令。
如果碰到了有关build缓存的相关问题,可以使用rm删除build目录,或者使用cmake --build build --clean-first
来在构建之前先清理构建目录。
添加源文件的几种方法
假设当前项目文件目录如下:
1 | . |
即当前项目的源文件为src目录下的cpp文件,在顶层的CMakeLists.txt
中添加源文件目标:
1 | # 方法一 |
可以看到,方法一和方法二虽然都是使用file
指令,但内容却稍有区别:
- 都是按照通配符批量匹配文件,
GLOB
和GLOB_RECURSE
的区别在于后者允许*递归目录去匹配 - 对于选项
CONFIGURE_DEPENDS
,如果不添加,则在src/下添加新文件,由于cmake缓存的原因,SOURCE_FILES
变量并不会更新,需要重新执行cmake -B build
设置可执行文件的输出位置
1 | set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) |