我注意到CMake不仅可以在${VAR_NAME}语法中使用变量,而且可以在<VAR_NAME>语法中使用变量。例如,以下代码:
IF(NOT CMAKE_CXX_LINK_EXECUTABLE)
SET(CMAKE_CXX_LINK_EXECUTABLE
"<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
ENDIF(NOT CMAKE_CXX_LINK_EXECUTABLE)
Run Code Online (Sandbox Code Playgroud)
在名为的脚本的CMake modules文件夹中找到CMakeCXXInformation.cmake。
我没有在文档中找到有关使用尖括号的语法的任何解释。有人使用过这样的语法可以解释其含义吗?
常规 CMake 变量可以使用常用${FOO}语法取消引用。这些取消引用发生在 CMake 运行期间。
在某个时候,CMake 引入了生成器表达式,其形式为$<FOO>. 从 CMake 的角度来看,此类表达式是纯字符串。但是,它们在构建系统生成阶段(例如,当您运行make或时ninja)被替换。
最后,还有<FOO>表情。这些也是纯字符串,主要在内部 CMake 代码中用作替代品,稍后用string(REPLACE ...)命令替换。例如,在 CMake 中添加对新语言的支持时,此类表达式被广泛使用,share/cmake/Modules/CMakeAddNewLanguage.txt有关更多信息,请参阅 参考资料。
ExternalProject命令的文档提到了一些<FOO>样式变量。<SOURCE_DIR>显然,它们<BINARY_DIR>被替换为给定外部项目的真实源代码和构建目录(而不是${CMAKE_SOURCE_DIR}调用${CMAKE_BINARY_DIR}的项目的目录ExternalProject_*()),但我无法找到这组命令的可用替换的完整列表。
| 归档时间: |
|
| 查看次数: |
1602 次 |
| 最近记录: |