1. 设置编译选项,add_compile_option和set CMAKE_CXX_FLAGS两种方式,
add_compile_option:针对所有编译器,包括C和C++编译器
而set CMAKE_C_FLAGS和CMAKE_CXX_FLAGS分别针对C和C++
譬如想加入C++11支持,
add_compile_option(-std=C++11)但是因为add_compile_option是针对所有类型编译器,所以在编译C代码时,就会产生warning
此时可以使用 set (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
2. project(PROJECT_NAME),这个不是强制性的,但是最好始终都加上,这一行会引入两个变量
PROJECT_NAME_BINARY和 PROJECT_NAME_SOURCE_DIR,是等价于以下
PROJECT_SOURCE_DIR = 全路径/src
PROJECT_BINARY_DIR = 全路径/build
3. $ENV的使用场景:因为经常把第三方依赖装到非系统目录下,因此cmake需要使用环境变量
cmake中对环境变量读写都是通过ENV前缀来访问环境变量
读取环境变量则要使用 $ENV{JAVA_HOME} 这样的格式
写环境变量如下:
set ( ENV{PATH} /home/zhangkunwu)
读取环境变量时前面一定要加$,而其他时间使用ENV则是指代变量名而不是取值
4. add_exectuable 告诉工程生成一个可执行文件
5. add_library 则是告诉工程生成一个库文件--CMakeList.txt文件中,命令不区分大小写,
而参数和变量是大小写相关的
6. CMake .. 用来指出CMakeList.txt文件所在的位置
7. set (CMAKE_VERBOSE_MAKEFILE on) 等同于 SET (CMAKE_VERBOSE_MAKEFILE on)
要显示构建过程中详细的信息,譬如为了得到更详细的出错信息