Подтвердить что ты не робот

С++ кроссплатформенная автоматизация сборки

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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