Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Msbuild 我真的需要cmake来实现构建自动化吗?_Msbuild_Cmake_Build Automation - Fatal编程技术网

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

Msbuild 我真的需要cmake来实现构建自动化吗?,msbuild,cmake,build-automation,Msbuild,Cmake,Build Automation,我目前正在调查cmake是否允许在Win32平台上自动构建。对于我想要构建的所有运行时和库,VisualStudio(2008/2010)项目确实存在 我遇到过cmake,但我不确定我是否真的需要它。正如文档所述,cmake生成VS项目,然后可以使用MSBuild等来构建它们 由于项目本身确实存在(并且通过IDE或cmd行上的MSBuild很好地构建),我需要并使用cmake做什么?仅用于目录/项目文件夹遍历?构建失败报告 问候,, 保罗,你不需要它。只有当您试图在多个平台和编译器中构建相同的源

我目前正在调查cmake是否允许在Win32平台上自动构建。对于我想要构建的所有运行时和库,VisualStudio(2008/2010)项目确实存在

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

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

问候,,
保罗,你不需要它。只有当您试图在多个平台和编译器中构建相同的源代码时,Cmake才有用。如果您只是使用microsoft堆栈进行构建,则不需要它。

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

  • 使用CMake的惯用方法迫使您使用源代码外构建。这是有争议的,但我个人相信,这会让您的源代码库非常干净

  • 您可以支持多个VisualStudio版本(带有源代码外版本)。也许将项目移植到其他编译器(从MinGW->linuxgcc)会更容易一些

  • 有了find_包和config.cmake文件,以及大量可用的findXXX模块,cmake可以更轻松地将第三方库“导入”到构建链中


  • 我想您真正需要的是MSBuild和代码库。根据需要编写脚本。(cmake、NAnt等)就个人而言,我非常喜欢使用Rake编写构建脚本,尽管它真正做的只是调用MSBuild(和MSDeploy)。但是,作为一个成熟的编程工具(Ruby语言),它可以成为一个非常强大的脚本代理。好吧,源代码外构建是一件事——但是对于手动测试和部署,这就是我使用VS IDE本身启动构建的方式。项目都在那里,不需要重新发明轮子(或者有重复的vcxproj文件)。绝对不需要保留重复的文件。CMake将替换vcxproj文件。对于我们来说,CMake提供了一个调整项目设置的中心位置(不仅针对不同的编译器,也针对不同的编译器版本)。旁注:是的,它确实使转换到Linux/gcc变得非常容易,我绝对建议您研究一下(从一个smal项目开始)。也就是说,“永远不要”改变一个正在运行的系统。谢谢-你会如何编写目录遍历脚本?手动还是有工具可以做到这一点,不管我定义了什么,然后检查返回代码并编写正确的报告?我不确定目录遍历是什么意思,但是,我会使用任何主要的持续集成平台,如CruiseControl.NET或Hudson。利用您所说的可以在MSBuild和IDE中构建它的事实,您应该可以获得当前正在查找的所有内容,并为将来的其他内容提供一个平台。您只需告诉它如何获取源代码,并将其指向您的解决方案文件或项目文件,然后大部分时间都在那里。我的意思是,我只想定义一组文件夹,在其中存放一个或多个VS项目,构建它们,收集输出/返回代码并展示它们。Hudson看起来有点专注于Java,会看一看CruiseControl.NET.Ahh,然后是的,CC.NET正是您开始工作所需要的。很好,LuckWell,我看到CC.NET需要一个支持ASP.NET的Web服务器——我没有或计划有。