2011-12-19 8 views
5

tengo una estructura de directorio de origen:la instalación de ciertos archivos con CMake

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

y quisiera una estructura de directorio de instalación de

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

Mi fuente árbol de directorios está todo bajo control de versiones, por lo que cada fuente carpeta contiene un directorio adicional .svn/. ¿Cuál es la forma más fácil de instalar todos los archivos de encabezado desde projectSource/include hasta projectInstall/include, omitiendo los directorios .svn?

me gustaría usar algo como:

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) 

pero a pesar de que estoy (intentar) instalar sólo los archivos que coinciden *.h, todavía estoy recogiendo el directorio .svn/ y contenidos.

Respuesta

12

Puede añadir EXCLUDE palabra clave para el patrón:

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

Uso de 'PATRÓN ".svn" EXCLUDE' funcionó, pero mi impresión de' PATRÓN FILES_MATCHING '* .h' 'era que sólo los archivos que coincide con el patrón sería instalado. No es ese el caso? – Chris

+0

Sí, cuando 'PATTERN' se usa sin' EXCLUDE', solo instala patrones coincidentes. Estabas viendo svn cosas emparejadas porque .svn/dir contiene archivos con nombres que terminan en ".h". Entonces, explícitamente debes decirle a CMake que no mire en .svn/dirs. – arrowd

+0

Ya veo, gracias por la explicación. – Chris

Cuestiones relacionadas