当前位置: 首页 > 面试题库 >

C ++构建系统

韶浩博
2023-03-14
问题内容

我将很快开始一个新的C++项目(它可能也包含一些C组件),并且我正在寻找一个现代的,具有工业实力的(即非beta)构建系统。该软件将由3-5个开发人员在3-5年内创建,并将在Linux上运行(稍后
可能 会支持Mac OS X和Windows
)。我正在寻找一种make比例如具有更好的可理解性,易用性和可维护性,但仍足以处理复杂项目的功能。首选开源软件。

我开始寻找到Boost.BuildCMakeMavenSCons到目前为止,喜欢的功能和所有这些概念,但我缺乏经验,使一个大型项目的决定。


问题答案:

我已经使用SCons一年多了,真的很棒。这是一个完整的构建系统,而不是构建脚本生成器。

它是基于Python的,您可以用Python编写SConstruct和SConscript(与Makefile等效),它允许您调用任何可能需要的可用库,以及Makefile授权的更清晰的语法。

由于Python是跨平台的,SCons也是如此,因此没有问题。

它捆绑了很多目标:

  • 检测可用的二进制文件并自动将许多扩展名映射到正确的二进制文件
  • 尽管可以覆盖它,但它会根据操作系统检测对象/库的正确扩展名
  • 提供了诸如Move,Copy,Tar等常用操作(在构建后会延迟)的功能,并且您可以提供自己的python脚本并将其挂接
  • 开箱即用,但在每个级别都提供了许多自定义挂钩

它确实非常有效,甚至可以提出一些高级功能(例如,将最终处理的文件的哈希存储在sqlite db中而不是使用时间戳),即使您最终决定了策略。

它还提供了免费的依赖项循环检测(Makefiles绝对没有的功能),并且界面通常是更好/自动化的。

我说这很有效吗?好吧,它显然允许多个作业并行执行;)

而且它也是免费的,就像免费喝酒一样;)

我只能推荐它。



 类似资料:
  • 13. 构建系统 强烈建议您选择一个支持依赖管理的构建系统,而且这个构建系统能够使用发布到“Maven Central”库中的组件。我们建议您选择Maven或Gradle。Spring Boot有可能与其他构建系统(例如Ant)一起工作,但是其他构建系统不会得到特别好的支持。

  • 强烈建议您选择支持依赖关系管理且可以使用发布到“Maven Central”存储库的artifacts的构建系统。 我们建议您选择Maven或Gradle。 可以让Spring Boot与其他构建系统(例如Ant)一起工作,但它们并没有得到特别好的支持。

  • Electron 使用 gyp 来生成项目 ,使用 ninja 来构建项目. 项目配置可以在 .gyp 和 .gypi 文件中找到. Gyp 文件 下面的 gyp 文件包含了构建 Electron 的主要规则 : atom.gyp 定义了 Electron 它自己是怎样被构建的. common.gypi 调整 node 的构建配置,来让它结合 Chromium 一起构建. vendor/brigh

  • Electron使用gyp进行项目生成,使用ninja进行构建。项目配置可以在 .gyp和 .gypi文件中找到。 Gyp文件 下面的 gyp文件包含了构建Electron的主要规则: electron.gyp定义了Electron本身是如何构建的。 common.gypi调整Node的构建配置,使其与Chromium一起构建。 brightray/brightray.gyp定义brightray

  • Electron 使用 GN 生成项目,并用 Ninja 完成构建。 项目配置位于 .gn 和 .gni 文件中。 Build System Overview Electron uses GN for project generation and ninja for building. Project configurations can be found in the .gn and .gni

  • Electron 使用 GN 生成项目,并用 Ninja 完成构建。 项目配置位于 .gn 和 .gni 文件中。 GN 文件 The following gn files contain the main rules for building Electron: BUILD.gn 指明了如何构建 Electron,还包括与 Chromium 相关的默认配置。 build/args/{debug,