Разница между именем проекта CMAKE и именем проекта?
в чем разница между CMAKE_PROJECT_NAME и PROJECT_NAME?
из документации:
имя текущего проекта.
указывает имя текущего проекта из ближайшей унаследованной команды project ().
имя проекта в команду проекта.
Это имя, данное последней команде project ().
Я не понимаю разницы.
когда я должен использовать CMAKE_PROJECT_NAME
? Когда я должен использовать PROJECT_NAME
?
1 ответов
из документации, я не понимаю разницы между двумя переменными.
разница в том, что CMAKE_PROJECT_NAME
- это имя последнего project
вызов из корневых CMakeLists.тхт, в то время как PROJECT_NAME
из последнего project
вызов, независимо от местоположения файла, содержащего команду.
разница узнаваема из следующего теста.
структура:|-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}")
соответствующие выход:
< A / A < B / B << B / D <<< B / F << B / E < B / B < C / C
в подкаталогах всегда B является значением для CMAKE_PROJECT_NAME
.