2012-04-10 45 views
2

我目前正在调查cmake以允许在Win32平台上自动构建。对于我想构建的所有运行时和库,Visual Studio(2008/2010)项目已经存在。我是否真的需要cmake来实现构建自动化?

我碰到过cmake,但我不确定是否真的需要它。正如文档所述,cmake生成VS项目,然后可以构建它们。使用MSBuild。由于项目本身已经存在(并且通过cmd行上的IDE或MSBuild很好地构建),我需要什么以及如何使用cmake?仅用于目录/项目文件夹遍历?构建失败报告?

问候, 保罗

+1

我想你真的是_need_是MSBuild和代码库。脚本它,但你想要它。 (cmake,NAnt等)就我个人而言,我真的很喜欢使用Rake构建脚本,尽管它实际上只是调用MSBuild(和MSDeploy)。但是,作为一个完全成熟的编程工具(Ruby语言),它可以成为一个非常强大的脚本代理。 – David 2012-04-10 14:59:31

回答

6

好吧,严格来说你不要需要吧。然而,它确实给你带来一些好处:

  1. 使用CMake的惯用方式迫使你使用out-of-source构建。可以说,但我个人确信这些让你的源代码库非常干净。

  2. 您可以支持多个visual studio版本(使用out-of-source版本)。也许将项目移植到其他编译器(从MinGW - > Linux GCC)会更容易一些。

  3. 通过使用find_package和config.cmake文件以及大量可用的findXXX模块,CMake使得将第三方库“导入”到构建链变得容易很多。

+0

那么,源代码外的构建是一些东西 - 但对于手动测试和部署,这就是我如何开始使用VS IDE本身构建。项目都在那里,不需要重新发明轮子(或者有重复的vcxproj文件)。 – PMiller 2012-04-10 20:11:38

+1

绝对不需要保留重复的文件。 CMake会替换vcxproj文件。对我们来说,CMake提供了一个调整项目设置的中心位置(不仅适用于不同的编译器,也适用于不同的编译器版本)。附注:是的,它绝对是非常容易的被转移到Linux/gcc,我绝对推荐你看看它(从一个小项目开始)。这就是说,“永不”改变一个正在运行的系统。 – 2012-04-12 07:11:58

5

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

+0

谢谢 - 你将如何脚本目录遍历?手动还是有工具可以做到这一点,踢我定义的任何东西,然后检查返回代码并写出适当的报告? – PMiller 2012-04-10 20:13:30

+0

我不确定目录遍历是什么意思,但是我会使用CruiseControl.NET或Hudson等任何主要的持续集成平台。那么,使用你说的你可以在MSBuild和IDE中构建它的事实,应该可以得到你目前正在寻找的所有东西,并为将来的其他事物提供一个平台。您只需告诉它如何获取源代码并将其指向您的解决方案文件或项目文件,并成为其中的大部分内容。 – Alex 2012-04-10 23:54:20

+0

我的意思是我只想定义一组文件夹,其中包含一个或多个VS项目,构建它们,收集输出/返回代码并呈现它。哈德森看起来有点专注于Java,会看看CruiseControl.NET。 – PMiller 2012-04-11 10:13:47

相关问题