buildbot C++ для Windows: используйте devenv.com, vcbuild.exe или MSBuild.exe?
Мой buildbot работает уже 3 года, используя devenv.com для компиляции проектов в Windows.
Теперь devenv.com имеет проблемы с сборкой для 64-битных версий: передача конфигурации как "Debug|x64" приводит к ошибкам командной строки из-за символа канала. Экранирование и заключение в кавычки приводят к другим ошибкам, некоторые из-за пробелов в именах каталогов, некоторые из-за странно понятой командной строки.
Я пробовал и vcbuild.exe, и MSBuild.exe. vcbuild.exe работает отлично: я бы хотел придерживаться этого. MSBuild.exe, с другой стороны, имеет совершенно странный и сложный вывод, что мои коллеги чувствуют себя ужасно. Но это везде рекламируется как способ построить.
Вопрос в том, какой из методов devenv.com, vcbuild.exe и MSBuild.exe наиболее вероятен для использования во времени?
4 ответа
MSBuild (до Visual Studio 2010/.NET 4) сама по себе не создает проекты C++. Он вызывает vcbuild.exe. Так что если вы счастливы, что не используете MSBuild, то я бы придерживался этого для проектов C++. Для управляемых проектов (и для C++ с использованием VS 2010) используйте MSBuild.
MSBuild - это метод "скорее всего, будет длиться долго". VCBuild.exe мертв; последний выпуск был в 2008 году. MSBuild 4.0 все еще будет использовать его, если ему нужно будет создать проект VC из VS2008 или более ранней версии. Что касается devenv.exe - конечно, это просто безголовый Visual Studio. Функционально это то же самое, что и сборка в VS. Это означает, что в наши дни это, по сути, просто передача MSBuild, но иногда с меньшим параллелизмом, чем получит msbuild.exe. Основная причина, по которой вам, возможно, все еще придется использовать devenv.exe - это проекты.vdproj (развертывание). Эти устаревшие вещи имеют процесс сборки, жестко запрограммированный в VS. Я рекомендую альтернативу, такую как WiX или Installshield, которые основаны на MSBuild. Не долго, пока все, что встроено в VS - это MSBuild.
Короче говоря, MSBuild - это будущее, используйте его, если у вас нет проектов развертывания или других особых обстоятельств.
Дэн
Я столкнулся с той же проблемой и решил ее с помощью экранирования оболочки Windows:
"Debug^|Win32"
msbuild.exe не (не?) не знает, как создавать проекты установки. devenv.exe делает.