2012-03-14 121 views
2

我有一個使用cmake的C++庫。我的媒體庫的結構如下:用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 2012-03-15 11:04:13

+0

它需要FILES_MATCHING模式和「/」而不是「\\」:install(DIRECTORY src/module1 src/module2 DESTINATION「C:/ temp」FILES_MATCHING PATTERN「* .h」)。請更新您的文章,並讓我的問題得到解答 – user1266334 2012-03-15 11:08:50