CMAKE_项目名称和项目名称之间的差异?

CMAKE_项目名称和项目名称之间的差异?,cmake,Cmake,CMAKE_项目名称和项目名称之间有什么区别 从文件中: 当前项目的名称 这将从最近继承的project()命令中指定当前项目的名称 指定给project命令的项目的名称 这是最新的project()命令的名称 我不明白有什么区别 我应该在什么时候使用CMAKE\u PROJECT\u NAME?什么时候应该使用文档中的PROJECT\u NAME?,我看不出这两个变量之间的区别 不同之处在于,CMAKE_PROJECT_NAME是来自根CMakeLists.txt的上一次PROJECT调用

CMAKE_项目名称和项目名称之间有什么区别

从文件中:

当前项目的名称

这将从最近继承的project()命令中指定当前项目的名称

指定给project命令的项目的名称

这是最新的project()命令的名称

我不明白有什么区别


我应该在什么时候使用
CMAKE\u PROJECT\u NAME
?什么时候应该使用文档中的
PROJECT\u NAME

,我看不出这两个变量之间的区别

不同之处在于,
CMAKE_PROJECT_NAME
是来自根CMakeLists.txt的上一次
PROJECT
调用的名称,而
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}")
project(D)
message("<< ${CMAKE_PROJECT_NAME} / ${PROJECT_NAME}")
add_subdirectory(test3)
project(E)
message("<< ${CMAKE_PROJECT_NAME} / ${PROJECT_NAME}")
project(F)
message("<<< ${CMAKE_PROJECT_NAME} / ${PROJECT_NAME}")
cmake_最低要求(3.0版)
项目(A)
消息(<${CMAKE\U PROJECT\U NAME}/${PROJECT\U NAME}”)
项目(B)
消息(<${CMAKE\U PROJECT\U NAME}/${PROJECT\U NAME}”)
添加_子目录(test2)
消息(<${CMAKE\U PROJECT\U NAME}/${PROJECT\U NAME}”)
项目(C)
消息(<${CMAKE\U PROJECT\U NAME}/${PROJECT\U NAME}”)
test2/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}")
project(D)
message("<< ${CMAKE_PROJECT_NAME} / ${PROJECT_NAME}")
add_subdirectory(test3)
project(E)
message("<< ${CMAKE_PROJECT_NAME} / ${PROJECT_NAME}")
project(F)
message("<<< ${CMAKE_PROJECT_NAME} / ${PROJECT_NAME}")
项目(D)

留言(“太棒了,谢谢。