我真的需要 cmake 来构建自动化吗?

Posted

技术标签:

【中文标题】我真的需要 cmake 来构建自动化吗?【英文标题】:Do I really need cmake for build automation? 【发布时间】:2012-04-10 14:56:43 【问题描述】:

我目前正在研究 cmake 以允许在 Win32 平台上自动构建。对于我想要构建的所有运行时和库,Visual Studio (2008/2010) 项目确实已经存在。

我遇到过 cmake,但我不确定我是否真的需要它。正如文档所说,cmake 生成 VS 项目,然后可以构建它们,例如使用 MSBuild。

由于项目本身已经存在(并且通过 IDE 或 cmd 行上的 MSBuild 很好地构建),我需要什么并使用 cmake 做什么?只是为了目录/项目文件夹遍历?构建失败报告?

问候, 保罗

【问题讨论】:

我想您真正需要的是 MSBuild 和代码库。随心所欲地编写脚本。 (cmake、NAnt 等)我个人非常喜欢将 Rake 用于我的构建脚本,尽管它真正做的只是调用 MSBuild(和 MSDeploy)。但是,作为一个成熟的编程工具(Ruby 语言),它可以成为一个非常强大的脚本代理。 【参考方案1】:

好吧,严格来说你不需要它。但是,它确实给您带来了一些优势:

    使用 CMake 的惯用方式会强制您使用源外构建。值得商榷,但我个人相信这些可以让您的源代码库非常干净。

    您可以支持多个 Visual Studio 版本(使用源外构建)。也许将您的项目移植到其他编译器(从 MinGW -> Linux GCC)会更容易一些。

    借助 find_package 和 config.cmake 文件,以及大量可用的 findXXX 模块,CMake 可以更轻松地将第三方库“导入”到您的构建链中。

    李>

【讨论】:

嗯,源代码外构建是一些东西 - 但对于手动测试和部署,这就是我使用 VS IDE 本身启动构建的方式。项目都在那里,无需重新发明***(或有重复的 vcxproj 文件)。 绝对不需要保留重复文件。 CMake 将替换 vcxproj 文件。对我们来说,CMake 提供了一个调整项目设置的中心位置(不仅适用于不同的编译器,还适用于不同的编译器版本)。旁注:是的,它确实很容易过渡到 Linux/gcc,我绝对可以推荐研究它(从一个小项目开始)。也就是说,“永远不要”更改正在运行的系统。【参考方案2】:

你不需要它。 Cmake 仅在您试图保持相同的源代码能够在多个平台和编译器中构建时才有用。如果您只是使用 microsoft stack 进行构建,则不需要它。

【讨论】:

谢谢 - 您将如何编写目录遍历脚本?手动或是否有工具可以执行此操作,踢出我定义的任何内容,然后检查返回码并编写正确的报告? 我不确定您所说的目录遍历是什么意思,但是,我会使用任何主要的持续集成平台,例如 CruiseControl.NET 或 Hudson。那,使用您所说的事实,您可以在 MSBuild 和 IDE 中构建它应该为您提供您当前正在寻找的一切以及未来其他事情的平台。您只需告诉它如何获取源代码并将其指向您的解决方案文件或项目文件,然后就可以到达那里。 我的意思是我只是想定义一组文件夹,其中一个或多个 VS 项目驻留,构建它们,收集输出/返回代码并呈现它。 Hudson 看起来有点专注于 Java,将看看 CruiseControl.NET。 啊,是的,CC.NET 正是您入门所需要的。祝你好运 嗯,我看到 CC.NET 需要一个支持 ASP.NET 的网络服务器——我没有或计划拥有。

以上是关于我真的需要 cmake 来构建自动化吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 linux 下使用 CMake 构建应用程序

你真的了解Maven吗?

你真的了解Maven吗?

你真的了解Maven吗?

你真的了解Maven吗?

你真的了解 Gulp 吗