参见《CMake practice》
基本语法
- PROJECT指令的语法:
PROJECT(projectname [CXX] [C] [Java])
- projectname 即工程名
- 支持的语言列表可忽略
- 生成了两个变量 <projectname>_BINARY_DIR、_SOURCE_DIR、PROJECT_BINARY_DIR、PROJECT_SOURCE_DIR,在外部编译时会不一样
- SET指令的语法
SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]) 如:SET(SRC_LIST main.c t1.c t2.c)
- 来显式的定义变量
- MESSAGE指令的语法
MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] "message to display"...)
- SEND_ERROR,产生错误,生成过程被跳过
- SATUS,输出前缀为—的信息
- FATAL_ERROR,立即终止所有cmake过程.
- ADD_EXECUTABLE
- 定义将生成的可执行文件及源文件
- ADD_SUBDIRECTORY
ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) 如:ADD_SUBDIRECTORY(src bin)
- 添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置
- EXCLUDE_FROM_ALL参数的含义是将这个目录从编译过程中排除
- 例子表示添加源文件目录src,并把生成的可执行文件放到构建目录的bin文件夹下
说明
- 变量使用${}方式取值,但是在IF控制语句中是直接使用变量名
- 参数之间可用空格或分号分隔
- 指令是大小写无关的,参数和变量是大小写相关的
- 文件名含空格可用双引号,如"fu nc.c"
- 可以忽略掉source列表中的源文件后缀
https://vdisk.weibo.com/wap/s/AcSJGKVz_Xj7w?category_id=2&parents_ref=AcSJGKVz_X6Sx