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

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

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

1 ответ

Решение

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

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

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

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

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

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

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

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

Since you talk about header files I suppose it's a program written in C or C++. In that case the build process is generally as follows:

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

Be sure to set a prefix so as not to overwrite system stuff in /usr/bin for projects using insane defaults.

If all dependencies are satisfied the configure script should proceed successfully, and so should do make, If problems occur, you can point to or disable dependencies with the configure script, relevant flags given by ./configure --help,

Once the compilation has succeeded, you can proceed to either install via sudo make install,

Alternatively, try to build a portfile or a formula which will do the building steps, but managed by the package manager.

The package manager route has many advantages:

  • the build commands are easily reproduced for a newer version of the project
  • the uninstallation is quite easily handled
  • you can contribute back the portfile/formula
  • you can take inspiration from an existing portfile/formula written for a similar project to successfully build your project

Resist the temptation to build Universal binaries. It can be a tricky matter which you should only attempt if you succeed and master regular builds first.

Be aware though that some projects are not written in a portable way (either by necessity, irrelevance, or lack of will) and will just fail to build on Mac OS X. Although not trivial, this could be an opportunity to learn and port the code to a new platform...

Другие вопросы по тегам