如何检索目标的相对运行时目标目录?

时间:2016-01-30 23:00:52

标签: cmake target installation-path

假设我按如下方式创建目标:

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>仅返回文件名,而不是路径

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

1 个答案:

答案 0 :(得分:0)

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

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

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