C++ 如何从Cygwin构建Visual Studio 9.0解决方案并获得构建输出?

C++ 如何从Cygwin构建Visual Studio 9.0解决方案并获得构建输出?,c++,visual-studio-2008,build-automation,cygwin,C++,Visual Studio 2008,Build Automation,Cygwin,我正在尝试使用Cygwin在Windows上建立一个自动构建系统。除此之外,它还需要能够构建几种Visual C++解决方案。我有一个脚本,用于设置devenv所需的环境变量,如果我在bash中键入“devenv”,它将打开VisualStudioIDE。到目前为止没有问题 我还可以通过键入 $ devenv mysolution.sln /build Debug $devenv mysolution.sln/build Debug 问题是它没有向我显示构建输出。事实上,它甚至没有告诉我构建是否

我正在尝试使用Cygwin在Windows上建立一个自动构建系统。除此之外,它还需要能够构建几种Visual C++解决方案。我有一个脚本,用于设置devenv所需的环境变量,如果我在bash中键入“devenv”,它将打开VisualStudioIDE。到目前为止没有问题

我还可以通过键入

$ devenv mysolution.sln /build Debug $devenv mysolution.sln/build Debug 问题是它没有向我显示构建输出。事实上,它甚至没有告诉我构建是否成功。命令简单地完成了,我得到了提示。然后我可以进入输出目录,检查是否创建了可执行文件,但是对于构建系统,我希望能够对错误进行grep


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

我找到了一个解决方法

devenv mysolution.sln /build Debug /out mylog.txt devenv mysolution.sln/build Debug/out mylog.txt
将生成输出转储到
mylog.txt
,这对于自动生成更加方便。我仍然很好奇,为什么输出没有显示在屏幕上。

cygwin会找到并运行.com文件吗

有两个
devenv
可执行文件,一个是
devenv.com
,它是一个控制台模式应用程序,处理另一个可执行文件
devenv.exe
的stdin、stdout和stderr代理,这是一个GUI模式应用程序。如果cygwin正在加载的是
devenv.exe
,那么就不会有stdin/stdout内容。如果正在加载
devenv.com
,则应在将stdout文件代理到控制台时启动
devenv.exe

如果您明确指定应该运行
devenv.com
,您是否考虑过使用?您可以使用msbuild构建VS解决方案,而无需进行任何修改,并且它会输出标准输出。该命令类似于:

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

MSBug是MS设计的自动化构建工具,因此它可能比运行Devv.exe .< /P> < P>稍微好一些,你可以知道,MSVBuSE在VS 2008中不能处理C++项目。我认为在vs 2010中可以做到。

这可能不会满足我的所有需求。此外,对于VS解决方案,我必须为嵌入式平台构建项目,该平台不使用VS。此时,我所需要的是能够构建所有配置,并在出现任何问题时收到电子邮件。因此,看起来MSBuild同时太强大,不够灵活,无法满足我的需要。MSBuild既非常强大,又非常灵活。如果它不是开箱即用的,则会有社区任务,例如和,这些任务会添加额外的功能,或者您可以随时编写自己的任务。即使您不在整个构建过程中使用它,它至少对MS产品编译的部分有用。