我正在尝试很长时间来理解生成器表达式的好处, 例如$<xxx:yy>在CMake中,何时以及如何使用它们.任何人都可以通过一些例子清楚地解释清楚.非常感谢
Flo*_*ian 21
CMake首先解析CMakeLists.txt项目中的文件 - 名为"配置阶段" - 然后生成构建环境 - 命名为"生成阶段".
所以基本上生成器表达式只适用于生成器可以知道的所有内容:
以下是我在项目中使用生成器表达式的示例:
复制可执行文件旁边的文件(在多配置环境中,您不能只使用变量CMAKE_CURRENT_BINARY_DIR)
add_custom_command(
TARGET library1
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"$<TARGET_FILE:library1>"
"$<TARGET_FILE_DIR:mainProject>/$<TARGET_FILE_NAME:library1>"
)
Run Code Online (Sandbox Code Playgroud)
add_custom_command(
TARGET myBinary
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/myTest.txt"
"$<TARGET_FILE_DIR:myBinary>/myTest.txt"
)
Run Code Online (Sandbox Code Playgroud)
区分例如DEBUG或RELEASE配置
add_compile_options("$<$<CONFIG:DEBUG>:/MDd>")
Run Code Online (Sandbox Code Playgroud)
使用TARGET_PROPERTY生成器表达式,您可以做很多事情,例如
file(GENERATE
OUTPUT "includes.txt"
CONTENT "$<TARGET_PROPERTY:motor,INCLUDE_DIRECTORIES>\n"
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6703 次 |
| 最近记录: |