假设我按如下方式创建目标:
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>
仅返回文件名,而不是路径我错过了什么?是否有包含此信息的属性?
答案 0 :(得分:0)
既没有生成器表达式也没有反映特定目标的安装路径的属性。您列出的所有生成器表达式都反映了有关目标 build 位置的信息。
有$<INSTALL_PREFIX>
生成器表达式,但只有在导出目标(install(EXPORT)
)且仅在此命令调用中才可用。
因此,如果您需要某个目标的目标目录,则应手动编写它。或者将其存储在某个目标的属性中,并使用$<TARGET_PROPERTY:tgt,prop>
生成器表达式。 [注意,如果您的属性反映 relative 路径,则此类生成器表达式不能与install
命令一起使用,因为此命令仅接受包含绝对路径的生成器表达式]