Как вы упаковываете G CC для распространения? - PullRequest
1 голос
/ 13 апреля 2020

Я делаю модифицированный компилятор C ++, и я его собрал и протестировал локально. Тем не менее, я хотел бы иметь возможность упаковать мою сборку для Windows, Linux (Debian) и Ma c OSX.

Все инструкции, которые я могу найти в Интернете, относятся к сборка g cc но не имеет отношения к созданию чего-то распространяемого (или, может быть, я что-то упустил?). Я знаю, что для Windows мне нужно каким-то образом связать MinGW, но это только смущает меня - и я понятия не имею, насколько хорошо Ма c работает с G CC в эти дни ..

Может кто-нибудь макет набора отдельных шагов высокого уровня, которые я мог бы попробовать в каждой системе, чтобы позволить людям легко устанавливать мой модифицированный компилятор?

1 Ответ

1 голос
/ 21 апреля 2020

Сначала убедитесь, что ваш проект хорошо установлен, включая исполняемые файлы, заголовки, зависимости времени выполнения. Если вы используете что-то вроде cmake, это вопрос установки вещей на CMAKE_INSTALL_PREFIX с возможностью добавления GnuInstallDirs . Если вы используете make, вам нужно убедиться, что make install --prefix=... работает хорошо.

Отсюда вы можете настроить таргетинг на каждую платформу независимо. Относитесь к упаковке независимо от вашего проекта. Как упоминал Чипстер, создание rpm файлов не так уж сложно. Файлы deb для ОС на основе Debian, tar.xz файлы для ОС на основе Arch похожи. Правила для создания этих пакетов могут использовать ваши install правила для создания пакета. Вы упомянули Mingw. Если вы нацелены на msys дистрибутив mingw для Windows, то пакет pacman на основе Arch будет работать и на msys. Вы можете медленно работать над поддержкой одной платформы за раз, практически не внося изменений в ваш настоящий проект.

Обычно в мире программного обеспечения с открытым исходным кодом люди выпускают файл tar.gz, поддерживающий ./configure && make && make install или аналогичный. Затем кто-то, связанный с платформой (например, разработчик Debian) найдет ваш проект, создаст для него некоторые правила упаковки и выпустит его в свой дистрибутив. Это означает, что ваш проект может полностью зависеть от места его выпуска. Это также означает, что вам пока не нужно беспокоиться о MacOS, вы можете подождать, пока у вас не появится кто-то, кто захочет, или какое-то оборудование для его тестирования.

Если вы действительно хотите контролировать как вещи упакованы для каждой платформы изнутри вашего проекта, и вы уже используете cmake, cpack - отличный инструмент, который помогает. После написания cpack правил для вашего проекта вы можете просто набрать cpack, чтобы создать много типов развертываемых архивов. Вы не получите полученный *.deb файл в официальных архивах Debian или Ubuntu, но по крайней мере люди, использующие эти форматы, могут установить ваш пакет.

Кроме того, рассмотрите возможность выпуска одного пакета с библиотеками времени выполнения и одного с содержимым разработки (заголовки, компилятор, библиотеки stati c). Таким образом, если кто-то использует ваш компилятор, он может перераспределить библиотеки времени выполнения, которые, вероятно, будут намного проще.

...