Cmake

PROJECT

格式:PROJECT(projectname [CXX] [C] [Java])
定义工程名称,指定工程支持的语言,支持的语言列表可以忽略,默认情况表示支持所有语言。这个指令隐式的定义了两个 cmake 变量:<projectname>_BINARY_DIR以及<projectname>_SOURCE_DIR。内部编译的话两个变量都是指向工程所在路径。工程名一般大写。

预定义变量

PROJECT_BINARY_DIRPROJECT_SOURCE_DIR是cmake系统预定义变量,值分别跟<projectname>_BINARY_DIR以及<projectname>_SOURCE_DIR一致。

SET

格式:SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
显式定义变量。引用变量的方式为${...},但有一些例外,比如在 IF 控制语句,变量是直接使用变量名引用,而不需要${}。

MESSAGE

格式:MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] "message to display" ...)
向终端输出用户定义的信息,包含了三种类型:
SEND_ERROR:产生错误,生成过程被跳过。
SATUS:输出前缀为—的信息。
FATAL_ERROR:立即终止所有 cmake 过程。

ADD_EXECUTABLE

格式:ADD_EXECUTABLE(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
生成可执行文件,注意:工程名与可执行文件名没有任何关系。

基本语法规则

1、变量使用${}方式取值,但是在 IF 控制语句中是直接使用变量名。
2、指令(参数1 参数2…)
参数使用括弧括起,参数之间使用空格或分号分开。
3、指令是大小写无关的,参数和变量是大小写相关的。推荐全部使用大写指令。
4、参数可使用双引号。

内部编译/内部构建

编译方式:在工程目录中执行cmake .
源文件、CMakeLists.txt都在工程目录中,生成的中间文件、Makefile等都在本目录中。生成一些无法通过使用make distclean自动删除的中间文件(因为无法跟踪)。

显示 Gitment 评论