Как создать решение Visual Studio 9.0 от Cygwin и получить сборку?

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

Я также могу построить решение из приглашения cygwin bash, набрав

$ devenv mysolution.sln /build Debug

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

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

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

Я нашел обходное решение.

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

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

Ответ 4

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