1,
if ( IS_ABSOLUTE name ) | 如果给定的name是一个绝对路径 |
2, file(RELATIVE_PATH, variable, dir, file) 确定从dir参数到指定文件file的相对路径。
3,get_filename_component
得到一个完整文件名中的特定部分。
get_filename_component(<VAR> FileName PATH|ABSOLUTE|NAME|EXT|NAME_WE|REALPATH [CACHE])
将变量<VAR>设置为路径(PATH),文件名(NAME),文件扩展名(EXT),去掉扩展名的文件名(NAME_WE),完整路径(ABSOLUTE),或者所有符号链接被解析出的完整路径(REALPATH)。注意,路径会被转换为Unix的反斜杠(/),并且没有结尾的反斜杠。该命令已经考虑了最长的文件扩展名。如果指定了CACHE选项,得到的变量会被加到cache中。
get_filename_component(<VAR> FileName PROGRAM [PROGRAM_ARGS <ARG_VAR>] [CACHE])
在FileName中的程序将会在系统搜索路径中被查找,或者是一个完整路径。如果与PRPGRAM一起给定了PROGRAM_ARGS选项,那么任何在Filename字符串中出现的命令行中选项将会从程序名中分割出来并存储在变量<ARG_VAR>中。这可以用来从一个命令行字符串中分离程序名及其选项。
4,
aux_source_directory 查找在某个路径下的所有源文件。
aux_source_directory(< dir > < variable >)
5,source_group
将文件分目录来显示在IDE中。source_group(file_ide_format FILES file) 将文件file按照file_ide_format的形式显示在ide中
6,file(GLOB variable [RELATIVE path] [globbing expressions]...)
file(GLOB_RECURSE variable [RELATIVE path]
[FOLLOW_SYMLINKS] [globbing expressions]...)
GLOB选项将会为所有匹配查询表达式的文件生成一个文件list,并将该list存储进变量variable里。文件名查询表达式与正则表达式类似,只不过更加简单。如果为一个表达式指定了RELATIVE标志,返回的结果将会是相对于给定路径的相对路径。文件名查询表达式的例子有:
*.cxx - 匹配所有扩展名为cxx的文件。
*.vt? - 匹配所有扩展名是vta,...,vtz的文件。
f[3-5].txt - 匹配文件f3.txt, f4.txt, f5.txt。
GLOB_RECURSE选项将会生成一个类似于通常的GLOB选项的list,只是它会寻访所有那些匹配目录的子路径并同时匹配查询表达式的文件。作为符号链接的子路径只有在给定FOLLOW_SYMLINKS选项或者cmake策略CMP0009被设置为NEW时,才会被寻访到。参见cmake --help-policy CMP0009 查询跟多有用的信息。
使用递归查询的例子有:
/dir/*.py - 匹配所有在/dir及其子目录下的python文件。
7,add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) 这条命令的作用是为构建添加一个子路径。
source_dir选项指定了CMakeLists.txt源文件和代码文件的位置。
如果source_dir是一个相对路径,那么source_dir选项会被解释为相对于当前的目录,但是它也可以是一个绝对路径。
8,CMAKE_SIZEOF_VOID_P 获取指针的size,从而判断操作系统是32或者64位
9,关注下面的几个常量:
CMAKE_BINARY_DIR, PROJECT_BINARY_DIR,_BINARY_DIR: