2012-03-14 120 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