2012-03-14 2 views
2

У меня есть библиотека C++, использующая cmake. Структура моей библиотеки выглядит следующим образом:Получение файлов с путями с CMake

src/module1/class1.h 
src/module1/class1.cpp 
src/module1/class2.h 
src/module1/class2.cpp 
src/module2/class3.h 
src/module2/class3.cpp 

и т.д ..

Я хочу, чтобы установить правила для моего проекта с помощью команды INSTALL. Во-первых, мне нужно, чтобы получить все мои заголовки файлов:

FILE (GLOB_RECURSE ALL_HEADERS "*.h") 

Далее я пытаюсь установить их в C: \ Temp:

INSTALL(FILES {$ALL_HEADER} DESTINATION "C:\\temp") 

Он работает, но в результате каталог имеет следующий вид:

temp/class1.h 
temp/class2.h 
temp/class3.h 

но не есть:

temp/module1/class1.h 
temp/module1/class2.h 
temp/module2/class3.h 

Как вы видите, CMake не «запоминает» пути к папке. Как я могу с этим справиться?

ответ

1

Одним из вариантов является использование install(DIRECTORY ... синтаксиса:

install(DIRECTORY src/module1 src/module2 DESTINATION "C:/temp" FILES_MATCHING PATTERN "*.h") 
+0

Он работает ... но он копирует все файлы, а не только "* .h". Кажется, что команда PATTERN не работает. – user1266334

+0

Для этого нужен шаблон FILES_MATCHING и "/" вместо "\\": install (DIRECTORY src/module1 src/module2 DESTINATION "C:/temp" FILES_MATCHING PATTERN "* .h"). Пожалуйста, обновите свой пост, и я отвечу на свой вопрос. – user1266334

Смежные вопросы