首页 > 解决方案 > CMAKE__LINK_EXECUTABLE 支持生成器表达式?

问题描述

我使用自定义链接器命令构建自定义 cmake 工具链文件(并且它有效)。喜欢:

set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> 
<CMAKE_CXX_LINK_FLAGS> 
<LINK_FLAGS> 
<OBJECTS> 
<LINK_LIBRARIES> 
--meta /home/user/some_dir/meta.txt -o <TARGET_BASE>.exe")

我想自动从目标中提取目录并为其添加相对路径以获得元的完整路径。喜欢:

set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> 
<CMAKE_CXX_LINK_FLAGS> 
<LINK_FLAGS> 
<OBJECTS> 
<LINK_LIBRARIES> 
--meta $<TARGET_CMAKE_DIR:${TARGET}>/some_dir/meta.txt -o <TARGET_BASE>.exe")

在文档中我没有找到任何有用的东西:https ://cmake.org/cmake/help/latest/variable/CMAKE_LANG_LINK_EXECUTABLE.html

有可能吗?提前致谢!

标签: c++cmake

解决方案


据我了解,生成器表达式在“规则”变量中不起作用。

在此类变量中执行的唯一扩展是<varname>扩展。

的可能值varname似乎是硬编码的。扩展是在Source/cmRulePlaceholderExpander.cxx源中执行的,在这里可以找到扩展变量的所有可能名称。(注意:其中许多名称有条件地可用于扩展)。

不幸的是,没有TARGET_DIR或类似的变量被扩展。


推荐阅读