2012-03-16 14 views
34

Come si configura CMake per eseguire la scansione in modo ricorsivo di una determinata directory e determinare l'elenco dei file di origine?È necessario che CMake ricerchi le cartelle in modo ricorsivo?

Il mio progetto è una libreria condivisa. Ho una struttura di cartelle simile a questo:

/ 
    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 

voglio evitare:

  • inquinare l'src/ e include/ directory con infinite CMakeLists.txt file
  • dover cambiare e adattare gli script ogni volta che cambia la mia struttura di cartelle

Va bene per ogni esempio avere il proprio script di compilazione, però.

risposta

38

CMake fornisce il seguente comando per i file ricorsive wildcard:

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

documentazione di comando: http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:file

+11

Si noti che se si utilizza questo metodo, si dovrà rigenerare CMake di nuovo ogni volta che si aggiungere o rimuovere file sorgenti. – mrgrieves

+6

@mrgrieves esiste un metodo più efficiente? In tal caso, considera di aggiungere un'altra risposta a questa domanda. –

Problemi correlati