What
CMake
是一个开源、跨平台的工具,旨在构建、测试和打包软件。CMake
通过简单的、独立于平台和编译器的配置文件来控制软件编译过程,并生成makefiles
。
CMake源文件
以CMake编写的源文件以CMakeLists.txt命名或以.cmake为扩展名。
可以使用include命令包含.cmake
。与其他语言允许将源文件拆分为模块或头文件类似,.cmake
里可以定义函数、宏等,然后在多个CMakeLists.txt
中复用。
CMakeLists.txt
是CMake在构建项目时使用的主配置文件,当执行CMake时,它的第一件事就是查找此文件。
CMake变量
CMake中变量都是string
类型。可以使用set()
和unset()
命令来声明或者移除一个变量。
变量的引用:${变量名}
变量作用域
函数级:在函数中定义的变量,作用域是函数内。
目录级:子目录的CMakeLists.txt
会将父目录的所有变量拷贝到当前CMakeLists.txt
中,当前CMakeLists.txt
中变量的作用域仅在当前子目录有效,即修改子目录中变量的值,不影响父目录中同名变量的值。“向下有效,值拷贝”特点。
全局级:cache
变量,在整个项目范围内,一般在SET定义变量时,指定CACHE参数就能定义为cache
变量。
编译过程
在 Linux 平台下使用 CMake 构建 C/C++ 工程的流程如下:
- 编写
CMakeLists.txt
规则 mkdir build
cd build
cmake ..
make
CMakeLists.txt demo
静态库&动态库
编译加速
ccache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 安装
sudo apt-get install ccache
# 创建软连接,让系统选择编译器时优先使用ccache
cd /usr/local/bin
ln -s ccache /usr/local/bin/gcc
ln -s ccache /usr/local/bin/g++
ln -s ccache /usr/local/bin/cc
ln -s ccache /usr/local/bin/c++
# 设置缓存空间大小
ccache -M 10G
# 查看ccache使用情况
ccache -s
# 清除缓存
ccache -C
How to speed up Compile Time of my CMake enabled C++ Project?