在传统CMake中是比较难办的,target_link_libraries提供了一种手段,可以用debug和optimized来区分具体的库名,而其他的编译或链接设置则比较困难。在Modern CMake中,我们可以通过generator-expression来实现。 generator-expression定义为$<...>的形式。该表达式的值有多种形式,而且支持嵌套使用: 条件表达式 $<condition:t...
现代化的CMake是围绕Target和Property来定义的,并且竭力避免出现变量variable的定义。Variable横行是典型CMake2.8时期的风格。现代版的CMake更像是在遵循OOP的规则,通过target来约束link、compile等相关属性的作用域。如果把一个Target想象成一个对象(Object),会发现两者的组织方式非常相似: 构造函数: add_executable add_...
在传统CMake中是比较难办的,target_link_libraries提供了一种手段,可以用debug和optimized来区分具体的库名,而其他的编译或链接设置则比较困难。在Modern CMake中,我们可以通过generator-expression来实现。 generator-expression定义为$<...>的形式。该表达式的值有多种形式,而且支持嵌套使用: 条件表达式 $<condition:t...
1. IF ( NOT ${variable} ) 2. … 3. ENDIF( NOT ${variable} ) 复制代码 如果变量variable的值为空,0,N,NO,OFF,FALSE,NOTFOUND这几种之一的话,则认为此变量表示“假”,即此处的“NOT ${variable}”为真。 CMake中的循环语句基本格式为: 1. FOREACH( var arg1 arg2 … ) 2. … 3. ENDFOR...
build_command(<variable> [CONFIGURATION <config>] [PROJECT_NAME <projname>] [TARGET <target>]) 把给定的变量<variable>设置成一个字符串,其中包含使用由变量CMAKE_GENERATOR确定的项目构建工具,去构建某一个工程的某一个目标配置的命令行。 对于多配置生成器,如果忽略CONFIGURATION选项,CMake将会选择一个合理...
string(REGEX MATCH <regular_expression> [...]) 例如可以匹配任何含有 in 的单词,但是注意到只会匹配一次 string(REGEX MATCH "[A-Za-z]*in[A-Za-z]*" S_out_var ${S}) message("S_out_var=${S_out_var}") # S_out_var=kind REGEX MATCHALL...
file(STRINGS <filename> <variable> [<options>...]) 从<filename>文件解析一串 ASCII 字符串并存储到<variable>中。文件中的二进制文件将被忽略。回车字符(\r,CR)将被忽略。选项如下: LENGTH_MAXIMUM <max-len>:只考虑比给定长度少的字符串。
This is an assignment statement that involves an expression b + c on the right-hand side of the assignment. The expression b + c will be evaluated and its value will be assigned to the variable a. CMake has a language to write CMakeLists.txt (and also to write scripts and modules)....
See also the CMAKE_<LANG>_COMPILER_VERSION variable. $<TARGET_POLICY:policy> 1 if the policy was NEW when the 'head' target was created, else 0. If the policy was not set, the warning message for the pol- icy will be emitted. This generator expression only works for a subset of ...
file(GLOB <variable> [LIST_DIRECTORIES true[false] [RELATIVE <path> ] [CONFIGURE_DEPENDS] [<globbing-expression> ...]) 1. 如:寻找当前路径下的cpp文件,且返回的结果中为/public/home的相对路径, file(GLOB TEST_RESULT LIST_DIRECT true RELATIVE /public/home *.cpp) ...