CMake基本特点
- Cmake: Cross Platform Make,一种可跨平台的高阶构建框架
- 能管理大项目,开源,高效,方便扩展
- 通过CMakeLists.txt的文件,CMake得以描述构建过程,并通过cmake命令产生标准的构建文件,如MakeFile
基本语法
- PROJECT(projectname [CXX] [C] [Java])
定义工程名称,并可指定工程支持的语言,支持的语言列表是可以忽略的,默认情况表示支持所有语言 - SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
SET 指令可以用来显式的定义变量:SET(SRC_LIST main.c t1.c t2.c) - MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] "message to display" ...)
用于向终端输出用户定义的信息 - ADD_EXECUTABLE(hello ${SRC_LIST})
定义生成可执行文件 - ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
用于向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置,EXCLUDE_FROM_ALL 参数的含义是将这个目录从编译过程中排除 - INSTALL 指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及文件、目录、脚本等
-
ADD_LIBRARY: 建动态库和静态库。
- INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
引入头文件搜索路径 - LINK_DIRECTORIES(directory1 directory2 ...)
添加非标准的共享库搜索路径 - TARGET_LINK_LIBRARIES
可以用来为 target 添加需要链接的共享库
基本命令
cmake ..
make help
make clean
make install: 可以通过 make install DESTDIR=/tmp/test
make VERBOSE=1
内置变量
CMAKE_C_FLAGS : 设置 C 编译选项
CMAKE_CXX_FLAGS:设置 C++编译选项
参考:: <<CMake 实践>>