如何将 PUBLIC_HEADER 设置为文件列表?

dpl*_*amp 5 cmake

我正在构建一个用 C++ 编写的共享库。它由 2 个类组成,因此有 2 个源文件和 2 个头文件。此外,为了简化使用,第三个头文件还包括其他两个头文件。所以我想安装3个公共标头。

问题是该属性PUBLIC_HEADER设置为第一个文件,而不是 3 个文件的列表(逗号分隔的字符串)。我用 查了一下。因此,仅复制该文件。属性似乎没有改变任何东西。get_target_property()FRAMEWORK

最终,我成功地用 复制了它们install(FILES),但看起来不是很干净。我该如何改进这个?

CMake 版本:3.16。

set(RST_PUBLIC_HEADERS
    "rst.hpp"
    "CPrbs.hpp"
    "CRstController.hpp"
    )
set_target_properties( ${PROJECT_NAME} PROPERTIES
    VERSION ${PROJECT_VERSION}
    FRAMEWORK TRUE
    PUBLIC_HEADER ${RST_PUBLIC_HEADERS}
    )
install(TARGETS ${PROJECT_NAME}
    LIBRARY DESTINATION lib
    PUBLIC_HEADER DESTINATION include/lib${PROJECT_NAME}
    )

Run Code Online (Sandbox Code Playgroud)

小智 4

将变量用引号引起来可以解决您的问题吗?

set_target_properties( ${PROJECT_NAME} PROPERTIES
    VERSION ${PROJECT_VERSION}
    FRAMEWORK TRUE
    PUBLIC_HEADER "${RST_PUBLIC_HEADERS}"
)
Run Code Online (Sandbox Code Playgroud)