C ++ кроссплатформенная автоматизация сборки - PullRequest
18 голосов
/ 01 июля 2011

У меня есть кроссплатформенный проект C ++, который нацелен и успешно компилируется в Linux, OSX и Windows. Я использую GNU Make для управления сборкой на всех платформах, gcc для компиляции под Linux и OSX и cl.exe для компиляции под Cygwin на windows. Мой текущий рабочий процесс состоит из написания кода под OSX и последующей сборки на каждой отдельной платформе для проверки переносимости кода. Этот процесс отнимает много времени, и мне было интересно, можно ли автоматически собрать все платформы за один шаг?

Ответы [ 3 ]

10 голосов
/ 01 июля 2011

Если я правильно понимаю ОП, вопрос не в замене make, а в том, как запустить сборку на каждой платформе?

Я бы предложил использовать http://jenkins -ci.org / - это Java, и его можно запускать в Windows, Linux, OSX и т. Д. Его можно настроить для одновременного запуска заданий сборки, чтобы любой Когда вы хотите сделать сборку, каждая платформа может быть запущена одновременно.

Кривая обучения для Дженкинса не так уж и страшна, но, вероятно, потребуется около 3-4 часов, чтобы начать работать правильно, как только вы это сделаете, однако, плавное плавание.

Если вы хотите стать профессионалом, вы можете сделать так, чтобы он опросил ваш репозиторий, и он запустит сборки автоматически после коммитов.

9 голосов
/ 01 июля 2011

Это звучит как работа для CMake .

7 голосов
/ 02 июля 2011

Хороший вопрос.Прежде всего, , вы не можете сделать эти сборки за один шаг на одной платформе .Однако вы можете найти систему сборки, которая позволяет легко создавать кроссплатформенную сборку и инструмент для автоматизации ваших задач. Это дает вам решение, котороеизбавляет вас от ручного построения, и вы можете полностью сосредоточиться на разработке кода.

CMake (как уже упоминалось) обеспечивает хорошее решение для кроссздание .Короче говоря, через CMake вы получаете, например, решения / проекты Visual Studio, make-файлы или тому подобное для целевой платформы, которые вы затем используете для построения на этой конкретной платформе.Ваша задача - поддерживать файлы сборки CMake, а CMake позаботится о том, чтобы генерировать конкретные файлы сборки для платформ, на которых вы строите.

Вы упоминаете, что сборки были построены «за один шаг» - это нужно немного исправитьиначе через автоматизацию сборки.То есть, используя систему Continuous Integration (CI), такую ​​как упомянутые Jenkins, Hudson или CruiseControl .В вашем случае вам нужно делать сборки на трех разных платформах (Windows, Linux и OSX), что означает, что вам нужно иметь CI, работающий на каждой платформе.Эти системы при настройке будут проверять изменения в репозитории исходного кода, а когда изменения будут найдены, источник будет выбран, а затем с помощью CMake он сгенерирует специфичные для платформы файлы сборки для платформы, на которой работает CI, затем соберет, протестирует и, наконец,сообщить результат, как прошла сборка.

...