Учебник для строительных проектов из источника

449
andyvn22

Несмотря на то, что я сам написал немало программного обеспечения и считаю себя относительно сведущим в компьютерном плане, я никогда не создавал успешно чужой проект из исходного кода . НИКОГДА. И я пытался - о, я пытался. Там всегда отсутствуют заголовочные файлы, непонятные ошибки, смехотворно длинные цепочки зависимостей. Если что-то на самом деле скомпилируется, это будет зависать при запуске.

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

1
Можете ли вы перефразировать вопрос, чтобы быть более конкретным о том, что вы хотите, чтобы пользователь superuser.com на самом деле ответил? Хотели бы вы, чтобы мы написали учебное пособие, предоставили вам информацию, предложили, где вы можете облажаться? Jonathan 14 лет назад 0

1 ответ на вопрос

2
Lloeki

Обратите внимание, что это грубая схема, так как проекты могут сильно отличаться.

Вероятно, наиболее распространенной причиной сбоя действительно являются зависимости или отсутствие переносимости кода.

Прежде всего убедитесь, что установлена ​​последняя версия XCode.

Я бы рекомендовал сначала использовать MacPorts или Homebrew . Это даст вам доступ ко многим пакетам с открытым исходным кодом из коробки.

Затем, если вашего проекта нет в списке предоставляемых пакетов, вышеупомянутые менеджеры пакетов позволят вам установить его прямые зависимости (и, в свою очередь, их зависимости, рекурсивно) гораздо проще, чем вручную создавать указанные зависимости из источника.

Вам предлагаются следующие два варианта:

  1. Вы строите и управляете проектом вручную
  2. вы создаете порт-файл (MacPorts) или формулу (Homebrew), позволяющую управлению пакетами получать, собирать, устанавливать и управлять вашим проектом

Способ создания вашего проекта во многом зависит от самого проекта и языка, на котором он написан. Инструкции, как правило, находятся в файле INSTALL или README.

Поскольку вы говорите о заголовочных файлах, я полагаю, что это программа, написанная на C или C ++. В этом случае процесс сборки обычно выглядит следующим образом:

./configure --prefix=/usr/local make 

Обязательно установите префикс, чтобы не перезаписывать системные данные в / usr / bin для проектов, использующих безумные значения по умолчанию.

Если все зависимости удовлетворены, configureскрипт должен продолжаться успешно, и так должно быть make. Если возникают проблемы, вы можете указать или отключить зависимости с помощью configureскрипта, соответствующие флаги задаются ./configure --help.

После успешной компиляции вы можете продолжить установку через sudo make install.

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

У менеджера пакетов есть много преимуществ:

  • Команды сборки легко воспроизводятся для более новой версии проекта.
  • удаление довольно легко обрабатывается
  • Вы можете внести свой вклад в файл порта / формулу
  • Вы можете черпать вдохновение из существующего файла порта / формулы, написанной для аналогичного проекта, чтобы успешно построить свой проект

Не поддавайтесь искушению построить универсальные двоичные файлы. Это может быть сложным делом, которое вы должны попытаться предпринять, только если преуспеете и освоите регулярные сборки.

Имейте в виду, что некоторые проекты не пишутся переносимым способом (либо по необходимости, из-за неуместности, либо из-за отсутствия воли) и просто не могут быть построены на Mac OS X. Хотя это и не тривиально, это может быть возможностью для изучения и портирования код для новой платформы ...

Похожие вопросы