这个问题是关于project命令,以及扩展,cmake中的一个手段的概念project.我真的不明白project它是什么,它与a target(我认为,我认为)的区别.
我查看了project命令的cmake文档,它说该project命令执行此操作:
为整个项目设置名称,版本和启用语言.
在页面上没有任何地方它似乎解释了一个项目实际上是什么(它通过命令执行的一些事情,但没有说明该列表是否是独占的).该cmake.org例子带领我们通过一个基本的构建设置,虽然它使用的project关键字,也没有解释它做什么或手段,至少不会,据我可以告诉.
什么是项目?又是什么的project命令呢?
Com*_*sMS 23
项目在逻辑上将许多目标(即库,可执行文件和自定义构建步骤)组合到一个可以自行构建的独立集合中.
在实践中,这意味着,如果你project在a中有一个命令CMakeLists.txt,你应该能够从该文件运行CMake,并且生成器应该生成可构建的东西.在大多数代码库中,每个构建只有一个项目.
但请注意,您可以嵌套多个项目.顶级项目可以包括子目录,该子目录又是另一个自包含项目.在这种情况下,该project命令为某些值引入了额外的作用域.例如,PROJECT_BINARY_DIR变量将始终指向当前项目的根二进制目录.与此相比CMAKE_BINARY_DIR,它始终指向顶级项目的二进制目录.另请注意,某些生成器可能会为项目生成其他文件.例如,Visual Studio生成器将为.sln每个子项目创建解决方案文件.
如果您的代码库非常复杂并且您需要用户能够单独构建某些组件,请使用子项目.这为构建构建系统提供了非常强大的机制.由于增加了编码和维护费用,使得几个子项目真正自成一体,我建议如果你有一个真正的用例,那么只能走这条路.将代码库拆分为不同的目标应该始终是构建构建的首选机制,而子项目应该保留用于那些您确实需要使目标子集自包含的极少数情况.
| 归档时间: |
|
| 查看次数: |
7736 次 |
| 最近记录: |