2011-12-19 13 views
5

Mam strukturę katalogów Źródło:Instalacja niektórych plików z CMake

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

i chciałoby się zainstalować strukturę katalogów

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

mojego drzewa katalogu źródłowego wszystko jest pod kontrolą wersji, więc każde źródło folder zawiera dodatkowy katalog .svn/. Jaki jest najłatwiejszy sposób instalacji wszystkich plików nagłówkowych od projectSource/include do projectInstall/include, pomijając katalogi .svn?

chciałbym użyć czegoś takiego:

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) 

ale chociaż jestem (próby) zainstalować tylko pliki pasujące *.h, ja wciąż podnosząc katalogu .svn/ i zawartość.

Odpowiedz

12

Możesz dodać EXCLUDE słowa kluczowego wzoru:

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

Korzystanie 'wzorcem ".svn" EXCLUDE' pracował, ale moje wrażenie' FILES_MATCHING wzorca "* .h" 'było to, że tylko pliki pasujące do tego wzoru zostanie zainstalowany. Czy tak nie jest? – Chris

+0

Tak, gdy 'PATTERN' jest używany bez' EXCLUDE', instaluje tylko dopasowane wzorce. Widziałeś, że rzeczy svn są dopasowane, ponieważ .svn/dir zawiera pliki o nazwach kończących się na ".h". Więc wyraźnie musisz powiedzieć CMake, aby nie zaglądał do .svn/dirs. – arrowd

+0

Rozumiem, dziękuję za wyjaśnienie. – Chris

Powiązane problemy