【问题标题】:How to integrate PreMake/CMake in a C++ build workflow如何在 C++ 构建工作流中集成 PreMake/CMake
【发布时间】:2012-03-02 06:58:20
【问题描述】:

我目前正在研究 PreMake/CMake。但是,我看不到如何在整个跨平台构建工作流程中使用它。实际上,它会生成 makefile(或解决方案)。那么,您如何在每个目标平台上实际构建这些解决方案?您是否必须为每个目标维护一个构建脚本(如 .sh 或 .bat 文件)?这首先会破坏使用像 premake/CMake 这样的工具的目的。

提供一个教程链接,展示从编码到使用 premake 最终构建产品的所有过程。

感谢您的帮助。

【问题讨论】:

  • 我不确定我是否理解这个问题。 Premake 生成构建文件。您通过构建它们来构建它们。如果您生成了一个 makefile,则在其上运行 make。如果你生成了一个 VC .sln,那么你在它上面运行 VC。 Premake 的重点是您的 用户 可以使用他们喜欢的任何构建文件。您可以使用 VC projs,而您的用户可以使用 makefile 或 Code::Blocks 或其他任何东西。
  • premake(或 CMake)生成项目文件(或 makefile)。问题是要知道如何以独立于平台的方式构建这些文件。 Ant 似乎就是这么做的……

标签: c++ continuous-integration cmake build-automation premake


【解决方案1】:

我们的主要开发也是用 C++ 完成的。我们使用 CMake + ANT。 Windows 上的 VisualStudio,Mac 和 iOS 上的 XCode。一些构建工具是用 Python 编写的。

它工作得相当顺利。我们有单元和低级组件测试直接从构建运行(利用我们稍微修改过的 CMake 的 CTest 机制 - CMake 是开源的)。更高级别的组件和系统测试是通过一个用 C# 编写的定制框架运行的(我们就使用现成的东西还是自己编写进行了激烈的争论,最后我们决定任何现成的框架我们必须进行大量修改,以至于从头开始编写我们自己的代码是值得的;我仍然想知道这是否是正确的决定。

我们将事物与 ANT 联系在一起 - 主要在最低级别使用 调用,但也使用完善的扩展(例如 ftpsvn)。我们的 CI 在 Jenkins 上运行,它通过 ANT 连接到较低的构建层。

【讨论】:

  • 谢谢。我正在用 C++ 编程。我编辑了这个问题。另外,我需要整个工作流程。我听说我们必须关闭 Visual Studio 解决方案,然后启动 premake,然后重新打开解决方案......这就是为什么我想听听人们使用 premake 以及他们每天如何使用它的原因。
  • 我们的主要开发也是用C++完成的。我们(主要)使用 CMake + ANT。 Windows 上的 VisualStudio,Mac 和 iOS 上的 XCode。它工作得相当顺利。我认为“教程”的要求有点过分——你会从提出具体问题中获得更多的收获。
  • 如何集成CMake + Ant?你用过这样的东西吗:code.google.com/p/cmakeant
  • 简单地说,答案是“是”——我们开发了一个包含各种 CMake 调用的 ANT“库”。严格来说,答案是“不”——我们通过 调用 CMake,而不是通过扩展。
  • @JosephGarvin,简短的回答是“一点也不”:)
猜你喜欢
  • 1970-01-01
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多