1

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

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

1 ответ1

2

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

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

Прежде всего убедитесь, что установлена последняя версия 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. Хотя это и не тривиально, это может быть возможностью для изучения и портирования код для новой платформы ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .