代码之家  ›  专栏  ›  技术社区  ›  Dima

如何从Cygwin构建Visual Studio 9.0解决方案并获取生成输出?

  •  11
  • Dima  · 技术社区  · 16 年前

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

    我还可以通过输入cygwin的bash提示符构建解决方案

    $ devenv mysolution.sln /build Debug
    

    问题是它没有显示生成输出。实际上,它甚至没有告诉我构建是否成功。命令只完成了,我得到了返回提示。然后我可以进入输出目录,检查是否创建了可执行文件,但是对于构建系统,我希望能够grep错误。

    我做错什么了?当我在Windows shell中运行devenv时,可以看到调试输出,但在cygwin中看不到。它被送到哪里去了,我怎么把它拿回来?

    4 回复  |  直到 15 年前
        1
  •  11
  •   Michael Burr    16 年前

    Cygwin会找到并运行.com文件吗?

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

    如果你明确指出 Devv.com 应该运行吗?

        2
  •  3
  •   heavyd    16 年前

    你考虑过使用吗 MSBuild ?您可以使用msbuild在不做任何修改的情况下构建vs解决方案,并将输出输出输出到stdout。该命令看起来类似于:

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

    msbuild是MS设计用于执行自动生成的工具,因此它可能比运行devenv.exe更适合您的问题。

        3
  •  2
  •   Dima    16 年前

    我找到了一个解决办法。

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

    将生成输出转储到 mylog.txt 这对于自动化构建更为方便。不过,我还是很好奇为什么输出没有显示在屏幕上。

        4
  •  1
  •   Dan Kegel    16 年前

    最后我听说,MSVBuSE在VS 2008不能处理C++项目。我认为在2010年的比赛中是可以的。

    推荐文章