2012-07-18 13 views
5

Sto sperimentando con CMake un po 'per un repository C++, ma sto correndo un po' di problemi cercando di semplificare la creazione di applicazioni contro le librerie nello stesso albero dei sorgenti senza molto del codice CMake in più.facilmente includere intestazioni dalla dipendenza della libreria in cmake

Il layout della struttura di origine è fondamentalmente i seguenti:

ROOT 
    libs/ 
     lib1/ 
     lib2/ 
     lib3/ 
    apps/ 
     app1/ 
     app2/ 
     app3/ 

Le librerie sono indipendenti l'uno dall'altro, e le applicazioni possono collegare contro una o più delle librerie.

Attualmente ho una radice CMakeLists.txt che elenca ogni applicazione e libreria come una sottodirectory in modo che se la libreria viene cambiata e l'applicazione viene ricostruita, così è la libreria. Ciò funziona correttamente e CMake lo collega senza che io debba specificare dove vive la libreria, ma non vedo un modo per fare qualcosa di simile per includere le directory.

C'è un modo comune per gestire questo? Preferirei che CMakeLists.txt di ogni applicazione non sia necessario elencare manualmente il percorso delle librerie di cui ha bisogno.

risposta

1

Se non si ha paura di rendere disponibili più intestazioni di quelle effettivamente necessarie per ciascuna applicazione, è possibile elencare tutte le directory lib in un'istruzione INCLUDE_DIRECTORIES ad es. nel CMakeListst.txt aggiungendo tutte le sottoliste dell'applicazione. Ma non esiste un tale concetto di gestione di "appartenenza" includendo cartelle per target built-in.

Problemi correlati