cmake 导出具有绝对文件路径的目标属性

pbpqsu0x  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(180)

我想从一个具有附加属性“my_special_file”的项目中导出并安装库目标:

add_library(my_lib INTERFACE)
        # my_file.json will be installed next to the exported .cmake target/package config files.
        set_target_properties(my_lib PROPERTIES
            my_filepath "relative/to/targets.cmake/my_file.json"
        )
        set_property(TARGET my_lib  APPEND PROPERTY EXPORT_PROPERTIES "my_filepath ")

在这个消耗性的项目中我想写:

get_target_property(my_filepath my_lib my_filepath)
# my_filepath shall now be an absolute file path

或在生成器表达式中:

set(some_variable "$<TARGET_PROPERTY:my_lib,my_filepath>")

如何让CMake导出my_filepath,使其成为安装树下的绝对路径?我不希望我的包的用户连接路径。

5anewei6

5anewei61#

事实证明,解决方案非常简单:

set_target_properties(my_lib PROPERTIES
            my_filepath "\${_IMPORT_PREFIX}/path/to/my_file.json"
)

转义${_IMPORT_PREFIX}会导致CMake仅在阅读导出的.cmake目标文件时解释变量。

相关问题