使用CMake编译C/C++程序(转载)
官方手册
CMake Tutorial
CMake Reference
作用
定义程序编译规则
基本流程
- 编写
CMakeLists.txt
- 通过
cmake
生成Makefile
make
编译
编写CMakeLists.txt
生成可执行文件的最简单版本的CMakeLists.txt
# 规定该CMakeLists.txt适用的cmake最小版本,这里是 3.10
cmake_minimum_required(VERSION 3.10)
# 相当于visual studio项目名称,这里是 Tutorial
project(Tutorial)
# 定义生成的可执行文件(程序)的名称,
# 相当于visual studio项目属性中的目标文件名,
# 这里是 Tutorial
# 用${PROJECT_NAME}替代,即可执行文件名称等于项目名称
# 和加入编译的源文件路径列表,路径相对于`CMakeLists.txt`所在目录,
# 相当于visual studio项目解决方案资源管理器中列出来的文件,这里是 tutroial.c
add_executable(Tutorial tutorial.c)
以上CMakeLists.txt定义的编译规则是将源文件tutorial.c编译成名为 Tutorial 的可执行文件。
常用语句
add_definitions() # 相当于visual studio项目属性中C/C++-预处理器-预处理器定义
include_directories() # 相当于visual studio项目属性中C/C++-常规-附加包含目录
link_directories() # 相当于visual studio项目属性中链接器-常规-附加库目录
link_libraries() # 相当于visual studio项目属性中链接器-输入-附加依赖项
set(A B) # 定义变量A内容为B
${A} # ${A}使用变量A,如上面${PROJECT_NAME}
file(GLOB SRC_FILE *.c) # 定义SRC_FILE为当前目录下后缀为c的文件列表
aux_source_directory(./ SRC_FILES) # 定义SRC_FILES为当前目录下的所有源文件列表,./ 表示当前目录, ../表示上级目录
message(STATUS ${A}) #输出消息 内容为变量A的值
通过cmake
生成Makefile
Usage
cmake [options] <path-to-source>
cmake [options] <path-to-existing-build>
cmake [options] -S <path-to-source> -B <path-to-build>
一般用法是,新建一个文件夹,一般命名为build
,在终端进入该文件夹,然后调用cmake ../
,cmake
会在找到上级目录找到CMakeLists.txt
,生成makefile
和一些其它文件。
make
编译
在Makefile
所在目录,调用make
命令,会根据Makefile
对程序进行编译生成。