cmake scope variabile, add_subdirectory

Ho un CMakeLists.txt nella mia radice del progetto e uno nella mia cartella / src. Quello nella cartella / src contiene solo una variabile con i file .cpp ( set (SOURCEFILES main.cpp foo.cpp) ) e nella radice CMakeLists.txt faccio add_subdirectory(src) e successivamente add_executable(MyApp ${SOURCEFILES}) .

Ma cmake mi dà l’errore

add_executable chiamato con numero errato di argomenti, nessuna fonte fornita

Come posso ottenere cmake per vedere la variabile? Ho letto che cmake conosce solo le variabili globali, ma ovviamente non è il caso …

Come menzionato nella documentazione del comando set , ogni directory aggiunta con add_subdirectory o ogni funzione dichiarata con function crea un nuovo scope.

Il nuovo ambito figlio eredita tutte le definizioni di variabili dall’ambito principale. Le assegnazioni di variabili nel nuovo ambito PARENT_SCOPE con il comando set saranno visibili solo nell’ambito PARENT_SCOPE meno che non venga utilizzata l’opzione PARENT_SCOPE .

Per rendere visibile il compito di SOURCEFILES nella cartella principale del tuo progetto, prova:

 set (SOURCEFILES main.cpp foo.cpp PARENT_SCOPE)