Cmake可以帮助我们简化对多个文件的同时编译,使得项目构建变得简单起来。Cmake的主要特点是:
跨平台,并可生成native编译配置文件,在Linux/Unix平台,生成makefile,在苹果平台,可以生成xcode,在Windows平台,可以生成MSVC的工程文件;简化编译构建过程和编译过程,Cmake的工具链非常简单:cmake+make;Cmake有两种编译方式:in-source build(内部构建),out-of-source build(外部构建)。
1.cmake变量引用的方式:
cmake中使用
进行变量的引用,而在IF等语句中,是直接使用变量名而不通过
{}取值。
2.自定义变量的方式:
使用SET 指令,就可以构建一个自定义变量了,比如SET(SRC_LIST main.c t1.c t2.c),就可以通过${SRC_LIST}来引用这个自定义变量了。
3.cmake常用变量:
CMAKE_BINARY_DIR=PROJECT_BINARY_DIR=< projectname >_BINARY_DIR,如果是in source编译,就是工程顶层目录,如果是out-of-source编译,指的是工程编译发生的目录。
CMAKE_SOURCE_DIR=PROJECT_SOURCE_DIR=< projectname >_SOURCE_DIR,无论哪种编译方式,都是工程顶层目录。
CMAKE_CURRENT_SOURCE_DIR指的是当前处理的CMkeLists.txt所在的路径。
EXECUTABLE_OUTPUT_PATH和LIBRARY_OUTPUT_PATH分别重新定义最终结果的存放目录。
4.cmake调用环境变量的方式:
使用$ENV{NAME}就可以调用系统的环境变量了。
5.cmake常用指令:
MESSAGE用于向终端输出用户定义的信息。
ADD_DEPENDENCIES定义target依赖的其他target,确保在编译本target之前,其他的target已经被构建。
ADD_EXECUTABLE
ADD_LIBRARY
ADD_SUBDIRECTORY
ADD_TEST
FILE
INCLUDE
INATALL
FIND_指令
IF
WHILE
注意:在linux系统中,一般的流程如下:
源文件→cmakelists.txt→cmake→makefile→make→生成可执行文件。