2011-12-19 90 views
5

我有一個源代碼目錄結構:安裝某些文件與CMake的

projectSource 
|---src 
|---include 
|---CMakeLists.txt 

,並想

projectInstall 
|---bin 
|---include 
|---lib 

我的源目錄樹的安裝目錄結構的所有版本控制之下,所以每個源文件夾包含額外的.svn/目錄。安裝projectSource/includeprojectInstall/include的所有頭文件,同時跳過.svn目錄的最簡單方法是什麼?

我想使用類似:

set(PROJECT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include) 
include_directories(${PROJECT_INCLUDE_DIR}) 
install(DIRECTORY ${PROJECT_INCLUDE_DIR}/ 
    DESTINATION "include" 
    FILES_MATCHING PATTERN "*.h" 
    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) 

,但即使我(試圖)只安裝匹配*.h文件,我還是拿起.svn/目錄和內容。

回答

12

您可以添加EXCLUDE關鍵字模式:

install(DIRECTORY ${PROJECT_INCLUDE_DIR}/ 
    DESTINATION "include" 
    FILES_MATCHING 
    PATTERN "*.h" 
    PATTERN ".svn" EXCLUDE 
    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) 
+0

使用'PATTERN 「的.svn」 EXCLUDE'的工作,但我的'FILES_MATCHING PATTERN 「的* .h」 的印象'是,只有文件匹配模式將被安裝。情況並非如此嗎? – Chris 2011-12-19 14:30:51

+0

是的,當'PATTERN'沒有使用'EXCLUDE'時,它只安裝匹配的模式。你看到svn的東西匹配,因爲.svn/dir包含名稱以「.h」結尾的文件。所以你明確地需要告訴CMake不要查看.svn/dirs。 – arrowd 2011-12-19 16:21:13

+0

我明白了,謝謝你的解釋。 – Chris 2011-12-20 15:37:27