Aus der Dokumentation, bekomme ich nicht den Unterschied zwischen den beiden Variablen.
Der Unterschied besteht darin, dass CMAKE_PROJECT_NAME
ist der Name von dem letzten Aufruf project
von der Wurzel CMakeLists.txt, während PROJECT_NAME
vom letzten project
Anruf ist, und zwar unabhängig von der Position der Datei des Befehl enthält.
Der Unterschied ist aus dem folgenden Test erkennbar.
Dateistruktur:
|-CMakeLists.txt
\-test2
|-CMakeLists.txt
\-test3
\-CMakeLists.txt
CMakeLists.txt:
cmake_minimum_required(VERSION 3.0)
project(A)
message("< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
project(B)
message("< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
add_subdirectory(test2)
message("< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
project(C)
message("< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
test2/CMakeLists.txt:
project(D)
message("<< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
add_subdirectory(test3)
project(E)
message("<< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
test2/test3/CMakeLists.txt:
project(F)
message("<<< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
Die entsprechende Ausgabe lautet:
< A/A
< B/B
<< B/D
<<< B/F
<< B/E
< B/B
< C/C
In den Unterverzeichnissen, immer B der Wert für CMAKE_PROJECT_NAME
ist.