在CMake脚本中使用尖括号的变量 [英] Variables with angle brackets in CMake scripts
问题描述
我注意到CMake不仅可以使用 $ {VAR_NAME}
语法中的变量,还可以在< VAR_NAME>
语法。例如,以下代码:
IF(NOT CMAKE_CXX_LINK_EXECUTABLE)
/ pre>
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)
在
CMakeCXXInformation.cmake
脚本中的CMake modules文件夹中找到。
在文档中没有找到任何关于使用尖括号的语法的解释。有人使用这样的语法,可以解释其含义吗?
解决方案此语法特定于定义编译和链接的规则。
这些规则在CMake中添加对新语言的支持时就会发挥作用,参见
share / cmake / Modules / CMakeAddNewLanguage.txt
了解更多信息。I noticed that CMake can use variables not only in
${VAR_NAME}
syntax, but also in<VAR_NAME>
syntax. For example, following code: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)
was found in CMake modules folder in script named
CMakeCXXInformation.cmake
.I didn't find any explanation about syntax using angle brackets in the documentation. Has someone used such syntax who can explain its meaning?
解决方案This syntax is specific to defining rules for compiling and linking. It's used by internal CMake machinery and not intended to be used by CMake users.
These rules are come in play when adding support for new language in CMake, see
share/cmake/Modules/CMakeAddNewLanguage.txt
for more info on this.这篇关于在CMake脚本中使用尖括号的变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!