buildbot C++, сборка под Windows:использовать devenv.com, vcbuild.exe или MSBuild.exe?
-
20-09-2019 - |
Вопрос
Мой билдбот уже 3 года использует devenv.com для компиляции проектов в Windows.
Теперь у devenv.com возникли проблемы со сборкой 64-битных версий:передача конфигурации как «Debug|x64» приводит к ошибкам командной строки из-за символа вертикальной черты.Экранирование и заключение в кавычки приводят к другим ошибкам, некоторые из-за пробелов в именах каталогов, некоторые из-за странного понимания командной строки.
Я пробовал и vcbuild.exe, и MSBuild.exe.vcbuild.exe работает отлично:Я хотел бы придерживаться этого.MSBuild.exe, с другой стороны, выдает совершенно странный и сложный результат, который вызывает у моих коллег ужас.Но это везде рекламируется как ТО способ построить.
Вопрос в том:какой из методов devenv.com, vcbuild.exe и MSBuild.exe, скорее всего, прослужит долго?
Решение
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-Shell-EscapePAPTING TIPE-символ:
"Debug^|Win32"
msbuild.exe нет (нет?) Devenv.exe делает.