2015-08-15 15 views
21

This page contiene un buon riepilogo delle variabili che CMake definisce già per noi. Sento che alcune variabili sono le stesse. Prendi ad esempio l'esempio CMAKE_SOURCE_DIR e PROJECT_SOURCE_DIR. Sono uguali, facendo riferimento alla cartella in cui è definito il livello principale CMakeLists.txt. Quindi la mia domanda è: c'è una sottile differenza tra loro? Grazie.CMAKE_SOURCE_DIR e PROJECT_SOURCE_DIR sono gli stessi in CMake?

risposta

34

è una differenza tra queste variabili. CMAKE_SOURCE_DIR fa infatti riferimento alla cartella in cui è definito il CMakeLists.txt di livello superiore. Tuttavia, PROJECT_SOURCE_DIR fa riferimento alla cartella di CMakeLists.txt contenente il comando più recente project().

Ad esempio, supponiamo di avere un progetto di livello superiore denominato Outer e che contenga una sottodirectory con il proprio progetto denominato Inner. Outer 'CMakeLists.txt s ha:

project(Outer) 
add_subdirectory(Inner) 

e Inner' s:

project(Inner) 

Poi, in entrambi questi file CMakeLists, CMAKE_SOURCE_DIR sarà fare riferimento a Outer s' dir fonte. Ma mentre PROJECT_SOURCE_DIR per Outer è anche questa stessa dir, questo non è il caso di Inner. PROJECT_SOURCE_DIR è la sottodirectory che contiene il suo CMakeLists.txt

Questa differenza si applica a tutte le variabili PROJECT_<var> rispetto a CMAKE_<var>.

+4

Puoi anche aggiungere la differenza con 'CMAKE_CURRENT_SOURCE_DIR'? – Svalorzen

Problemi correlati