Как создать решение 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 годом.