cmake glob include при сохранении структуры каталогов - PullRequest
13 голосов
/ 02 июня 2011

Я новичок в 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)

Все файлы получаютнайдено, но иерархия каталогов уплощена.

FWIW Команда bjam, которую я пытаюсь эмулировать,

install headers 
    : ../include/EnsembleLearning.hpp  
      [ glob ../include/MyLib/*.hpp ]  
      [ glob ../include/MyLib/detail/*.hpp ]  
    : <install-source-root>../include ;

1 Ответ

15 голосов
/ 02 июня 2011

Вы можете использовать вариант DIRECTORY команды CMake install .Эта команда сохранит структуру скопированного каталога:

install(DIRECTORY include/ DESTINATION include
          FILES_MATCHING PATTERN "*.hpp")

Если копируемый каталог содержит подкаталоги, которые не должны быть установлены, вам придется явно исключить те, которые имеют опцию PATTERN EXCLUDE:

install(DIRECTORY include/ DESTINATION include
          FILES_MATCHING PATTERN "*.hpp"
          PATTERN "include/MyOtherLib" EXCLUDE)
...