2009-06-25 92 views
11

我正试图在Windows上使用Cygwin设置自动构建系统。除此之外,它需要能够构建多个Visual C++解决方案。我有一个脚本,用于设置devenv所需的环境变量,如果我在bash中键入'devenv',它将启动Visual Studio IDE。目前没有问题。如何从Cygwin构建Visual Studio 9.0解决方案并获取构建输出?

我还可以通过键入

 
$ devenv mysolution.sln /build Debug 

问题构建从Cygwin的bash提示符的解决方案是,它没有显示我的构建输出。事实上,它甚至不告诉我该构建是否成功。该命令完成后,我回到提示。然后我可以进入输出目录,并检查是否创建了可执行文件,但对于构​​建系统,我希望能够查找错误。

我在做什么错?当我在windows shell中运行devenv时,我可以看到调试输出,但不能在cygwin中运行。它在哪里发送,我如何恢复它?

回答

11

cygwin会查找并运行.com文件吗?

有2个devenv可执行程序,一个是devenv.com这是一个控制台模式的应用程序,处理标准输入,输出和错误代理的其他可执行文件,devenv.exe,这是一个GUI模式的应用程序。如果devenv.exe是cygwin加载的内容,那么将不会有stdin/stdout的东西。如果正在加载devenv.com,它应该启动devenv.exe,同时将stdout内容代理到控制台。

也许如果你明确指定应该运行devenv.com

+0

就是这样!谢谢! – Dima 2009-06-25 23:34:53

2

我找到了解决方法。

 
devenv mysolution.sln /build Debug /out mylog.txt 

会将构建输出转储到mylog.txt,这对于自动构建来说更加方便。不过,我仍然很好奇为什么输出结果没有显示在屏幕上。

3

您是否考虑过使用MSBuild?你可以使用msbuild来构建VS解决方案而不做任何修改,并且它将输出输出到标准输出。该命令看起来是这样的:

msbuild mysolution.sln /t:Build /p:"Configuration=Debug" /p:"Platform=Win32" 

的MSBuild是MS专门做自动化生成,所以它可能适合你的问题不是运行devenv.exe的好一点的工具。

+0

这可能不会做我需要的一切。另外对于VS解决方案,我必须为不使用VS的嵌入式平台构建项目。在这一点上,我需要的是能够构建所有配置并在发生任何问题时收到电子邮件。所以看起来MSBuild同时功能太强大,而且不够灵活,无法满足我的需求。 – Dima 2009-06-26 00:00:15

1

上次我听说,vsbuilder中的msbuild无法处理C++项目。我认为它可以在2010年。

相关问题