Z dokumentacji nie dostaję różnicy między dwiema zmiennymi.
Różnica polega na tym, że CMAKE_PROJECT_NAME
to nazwa z ostatniego project
rozmowy z CMakeLists.txt korzenia, natomiast PROJECT_NAME
jest z ostatniego project
rozmowy, niezależnie od lokalizacji pliku zawierającego polecenia.
Różnica jest rozpoznawalna na podstawie poniższego testu.
struktura pliku:
|-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}")
Odpowiednie wyjście jest:
< A/A
< B/B
<< B/D
<<< B/F
<< B/E
< B/B
< C/C
W podkatalogów, zawsze B jest wartością dla CMAKE_PROJECT_NAME
.