3

假设我创建了一个目标,如下所示:

add_executable(app main.c)
install(TARGETS app
    RUNTIME DESTINATION some/path}
)

如何some/path使用生成器表达式进行检索?

  • $<TARGET_FILE:tgt>返回带有安装前缀的完整绝对路径
  • $<TARGET_FILE_DIR:tgt>做同样的事情并包含文件名
  • $<TARGET_FILE_NAME:tgt>只返回文件名,不返回路径

我错过了什么?是否有包含此信息的属性?

4

1 回答 1

0

既没有生成器表达式,也没有属性反映特定目标的安装路径。您列出的所有生成器表达式都反映了有关目标构建位置的信息。

$<INSTALL_PREFIX>生成器表达式,但它仅在导出目标时可用 ( install(EXPORT)) 并且仅在此命令调用中可用。

所以,如果你需要某个目标的目标目录,你应该手动编写它。或者将其存储在某个目标的属性中并使用$<TARGET_PROPERTY:tgt,prop>生成器表达式。[注意,如果您的属性反映了相对路径,则此类生成器表达式不能与install命令一起使用,因为此命令仅接受包含绝对路径的生成器表达式。]

于 2016-01-31T15:32:18.053 回答