Как построить решение Visual Studio 9.0 из Cygwin и получить результаты сборки? - PullRequest
11 голосов
/ 26 июня 2009

Я пытаюсь настроить автоматизированную систему сборки в Windows, используя Cygwin. Помимо прочего, он должен иметь возможность создавать несколько решений Visual C ++. У меня есть сценарий, который устанавливает переменные среды, необходимые для devenv, и если я наберу 'devenv' в bash, это вызовет Visual Studio IDE. Пока проблем нет.

Я также могу создать решение из командной строки cygwin, набрав

$ devenv mysolution.sln /build Debug

Проблема в том, что он не показывает вывод сборки. На самом деле, он даже не говорит мне, была ли успешной сборка. Команда просто завершается, и я возвращаю подсказку. Затем я могу зайти в выходной каталог и проверить, был ли создан исполняемый файл, но для системы сборки я хочу иметь возможность поиска ошибок.

Что я делаю не так? Я вижу выходные данные отладки, когда я запускаю devenv в оболочке Windows, но не в Cygwin. Куда оно отправляется и как мне его вернуть?

Ответы [ 4 ]

11 голосов
/ 26 июня 2009

Будет ли cygwin находить и запускать файлы .com?

Существует 2 devenv исполняемых файла, один из них devenv.com, который является приложением в консольном режиме, который обрабатывает прокси-запросы stdin, stdout и stderr для другого исполняемого файла, devenv.exe, который является приложением в режиме графического интерфейса. Если devenv.exe - это то, что загружает cygwin, тогда ничего не будет в stdin / stdout. Если загружается devenv.com, он должен запустить devenv.exe при одновременной передаче содержимого stdout на консоль.

Может быть, если вы явно укажете, что devenv.com должен быть запущен?

3 голосов
/ 26 июня 2009

Рассматривали ли вы использование MSBuild ? Вы можете использовать msbuild для построения VS-решений без каких-либо изменений, и он выводит вывод из stdout. Команда будет выглядеть примерно так:

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

MSBuild - это инструмент, разработанный MS для автоматизированных сборок, поэтому он может немного лучше решить вашу проблему, чем запуск devenv.exe.

2 голосов
/ 26 июня 2009

Я нашел обходной путь.

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

выведет вывод сборки в mylog.txt, что еще более удобно для автоматизированных сборок. Мне по-прежнему любопытно, почему вывод не отображается на экране.

1 голос
/ 05 сентября 2009

Последнее, что я слышал, msbuild vs 2008 не может обрабатывать проекты c ++. Я думаю, что это может быть против 2010 года.

...