cmake glob包括保留目录结构

Tom*_*Tom 14 c++ install glob directory-structure cmake

我是新手cmake,我正在尝试.hpp在保留目录结构的同时安装文件.

到目前为止我有

FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp"
  "${CMAKE_CURRENT_SOURCE_DIR}/include/MyLib/*.hpp"
  "${CMAKE_CURRENT_SOURCE_DIR}/include/MyLib/detail/*.hpp"

install (FILES ${files}  DESTINATION include)
Run Code Online (Sandbox Code Playgroud)

找到所有文件但目标层次结构已展平.

FWIW bjam我试图模仿的命令是

install headers 
    : ../include/EnsembleLearning.hpp  
      [ glob ../include/MyLib/*.hpp ]  
      [ glob ../include/MyLib/detail/*.hpp ]  
    : <install-source-root>../include ;
Run Code Online (Sandbox Code Playgroud)

sak*_*kra 15

您可以使用CMake install命令的DIRECTORY变体.此命令将保留复制目录的结构:

install(DIRECTORY include/ DESTINATION include
          FILES_MATCHING PATTERN "*.hpp")
Run Code Online (Sandbox Code Playgroud)

如果要复制的目录包含不应安装的子目录,则必须使用PATTERN EXCLUDE选项明确排除这些子目录:

install(DIRECTORY include/ DESTINATION include
          FILES_MATCHING PATTERN "*.hpp"
          PATTERN "include/MyOtherLib" EXCLUDE)
Run Code Online (Sandbox Code Playgroud)