2012-03-16 18 views
34

¿Cómo configuro CMake para escanear recursivamente un directorio determinado y determinar la lista de archivos fuente?¿Tiene CMake escanea las carpetas de forma recursiva?

Mi proyecto es una biblioteca compartida. Tengo una estructura de carpetas similar a esto:

/ 
    src/    # Source files in an arbitrary tree 
    include/   # Headers, tree mirrors that of the src/ folder 
    examples/   # Executable code examples that link against the library 
    CMakeLists.txt 

que quieren evitar:

  • contaminar el src/ y include/ directorios con un sinfín de CMakeLists.txt archivos
  • tener que cambiar y adaptar los guiones cada vez que cambiar la estructura de mi carpeta

Está bien que cada ejemplo tenga su propio script de compilación, sin embargo.

Respuesta

38

CMake ofrece el siguiente comando para archivos recursivos globing:

file(GLOB_RECURSE variable [RELATIVE path] 
    [FOLLOW_SYMLINKS] [globbing expressions]...) 

documentación de comando: http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:file

+11

Tenga en cuenta que si se utiliza este método, usted tiene que regenerar cmake de nuevo cada vez que agregar o quitar archivos fuente. – mrgrieves

+6

@mrgrieves ¿hay un método más eficiente? Si es así, considere agregar otra respuesta a esta pregunta. –

Cuestiones relacionadas