Cmake generator expressions
我一直在努力了解CMake中生成器表达式(例如
谁能用一些例子清楚地解释它。
提前多谢
CMake首先解析项目中的
因此,基本上,生成器表达式适用于仅生成器可以知道的所有内容:
- 目标输出的名称和路径(主要是在交叉编译和多配置环境中时)
- 或更一般而言,生成器评估为将编译器/链接器调用混合在一起的任何目标属性
以下是在项目中使用生成器表达式的示例:
复制可执行文件旁边的文件(在多配置环境中,您不能只使用
1 2 3 4 5 6 7 | add_custom_command( TARGET library1 POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:library1>" "$<TARGET_FILE_DIR:mainProject>/$<TARGET_FILE_NAME:library1>" ) |
CMake构建后事件:复制编译的库
1 2 3 4 5 6 7 | add_custom_command( TARGET myBinary POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/myTest.txt" "$<TARGET_FILE_DIR:myBinary>/myTest.txt" ) |
如何将外部测试文件添加到cmake项目
区分例如
1 | add_compile_options("$<$<CONFIG:DEBUG>:/MDd>") |
对于Cmake,您可以使用add_compiler_flags()命令修改发布/调试编译器标志吗?
在跨平台cmake项目中设置编译器标志的现代方法
使用
1 2 3 4 5 | file(GENERATE OUTPUT"includes.txt" CONTENT"$<TARGET_PROPERTY:motor,INCLUDE_DIRECTORIES> " ) |
CMake没有获取链接库的INTERFACE_INCLUDE_DIRECTORIES