gpt4 book ai didi

cmake - CMAKE_PROJECT_NAME 和 PROJECT_NAME 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 14:06:05 27 4
gpt4 key购买 nike

CMAKE_PROJECT_NAME 和 PROJECT_NAME 有什么区别?
从文档:
CMAKE_PROJECT_NAME

The name of the current project.

This specifies name of the current project from the closest inherited project() command.


PROJECT_NAME

Name of the project given to the project command.

This is the name given to the most recent project() command.


我不明白其中的区别。
我应该什么时候使用 CMAKE_PROJECT_NAME ?我应该什么时候使用 PROJECT_NAME ?

最佳答案

从文档中,我没有得到两个变量之间的区别。

不同的是CMAKE_PROJECT_NAME是最后一个 project 的名字从根 CMakeLists.txt 调用,而 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 的值.

关于cmake - CMAKE_PROJECT_NAME 和 PROJECT_NAME 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38938315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com