gpt4 book ai didi

cmake - 在 cmake 中,什么是 "project"?

转载 作者:行者123 更新时间:2023-12-03 08:58:26 26 4
gpt4 key购买 nike

这个问题是关于project命令以及扩展的概念 project在 cmake 中的意思。我真的不明白什么是project是,以及它与 target 的区别(我确实理解,我想)。

我看了cmake documentation for the project 命令,它说 project命令执行以下操作:

Set a name, version, and enable languages for the entire project.



不用说,使用项目这个词来定义项目是没有帮助的。

页面上似乎没有任何地方解释项目实际上是什么(它经历了命令所做的一些事情,但没有说明该列表是否是独占的)。 cmake.org examples带我们完成一个基本的build设置,虽然它使用 project关键字它也没有解释它的作用或含义,至少据我所知没有。

什么是项目?什么是 project命令做什么?

最佳答案

一个项目在逻辑上将多个目标(即库、可执行文件和自定义构建步骤)分组到一个可以自行构建的自包含集合中。

实际上,这意味着,如果您有 project CMakeLists.txt 中的命令,您应该能够从该文件运行 CMake,并且生成器应该生成可构建的内容。在大多数代码库中,每个构建只有一个项目。

但是请注意,您可以嵌套多个项目。顶级项目可能包含一个子目录,而该子目录又是另一个自包含项目。在这种情况下,project命令为某些值引入了额外的范围。例如, PROJECT_BINARY_DIR 变量将始终指向当前项目的根二进制目录。将此与 CMAKE_BINARY_DIR 进行比较,它始终指向顶级项目的二进制目录。另请注意,某些生成器可能会为项目生成其他文件。例如,Visual Studio 生成器将创建一个 .sln每个子项目的解决方案文件。

如果您的代码库非常复杂并且您需要用户能够独立构建某些组件,请使用子项目。这为构建构建系统提供了非常强大的机制。由于使几个子项目真正独立所需的编码和维护开销增加,我建议只有在您有实际用例时才走这条路。将代码库拆分为不同的目标应该始终是构建构建的首选机制,而子项目应该保留用于那些真正需要使目标的子集自包含的极少数情况。

关于cmake - 在 cmake 中,什么是 "project"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26878379/

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