CMake安装头文件并维护目录层次结构

inf*_*ged 2 cmake

使用cmake 2.8

我想在将头文件从源目录复制到目标目录时维护目录层次结构.例如,需要复制的头文件是abc/1.h,def/2.h,它们也应该直接在目标中以相同的顺序复制(通过CMAKE_INSTALL_PREFIX设置)

这是我尝试过的,但它只是复制头文件而不是包含父目录名的头文件

set(HEADERS "abc/1.h;def/2.h")
install(FILES ${HEADERS} DESTINATION include)
Run Code Online (Sandbox Code Playgroud)

最终输出应为dest_directory/abc/1.h和dest_directory/def/2.h.

Tsy*_*rev 7

如果目录中有许多文件用于安装,则可以考虑使用命令流安装目录install(DIRECTORY).您可以选择使用PATTERNREGEX选项安装目录中的哪些文件:

install(DIRECTORY "${CMAKE_SOURCE_DIR}/" # source directory
        DESTINATION "include" # target directory
        FILES_MATCHING # install only matched files
        PATTERN "*.h" # select header files
)
Run Code Online (Sandbox Code Playgroud)

有关的更多信息,请参阅CMake文档install(DIRECTORY).此外,它描述了源目录末尾的含义"/".