Соображения по включению библиотеки как двоичного файла против исходного
========================================================================

Я пытаюсь написать SSH-клиент для iPhone, и я хотел бы использовать для этого библиотеку с открытым исходным кодом libssh2. Он написан на C.

Как мне включить эту библиотеку C для моего приложения для iPhone? Должен ли я скомпилировать его в какой-нибудь двоичный файл, который я включаю в мое приложение, или добавить весь исходный код в свой проект и попытаться скомпилировать его вместе с остальной частью моего приложения?

Я интерпретирую этот вопрос как:

"Should I compile the C library code once, and include the binary library in my project? Or should I include all the source and compile it every time I build my app?"

Это зависит. Один из проектов, над которым я работаю, зависит от нескольких внешних библиотек. По сути, у нас есть простое правило:

Do you think you will need to change code in the C library often?

If you will be changing the code, or updating versions often, include the source and build it with the rest of your project.
If you're not going to change the code often or at all, it might make sense to just include the pre-built binary in your project.

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

Если бы я был на вашем месте, я бы заранее собрал libssh2 и просто включил бинарную библиотеку в свой проект iPhone. Конечно, я бы по-прежнему держал источник libssh2 на всякий случай, если его нужно будет восстановить в будущем.



У меня есть приложение для iPhone, которое на 90% c. У меня не было проблем с добавлением сторонних источников в мой проект и компиляцией. Я использую Lua, zLib и libpng без изменений. Я также включил стандартные библиотеки, такие как unistd и libgen, и они просто работают & # x2122;



[Three20](https://github.com/joehewitt/three20/tree/master) В библиотеке iPhone есть отличные инструкции по добавлению своей библиотеки в ваш проект xcode. Дайте этому шанс.



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

Я действительно не могу думать о каких-либо недостатках в создании библиотеки, после первоначальной стоимости ее установки и наличия дополнительного проекта для изменения, если у вас есть какие-то изменения, которые необходимо внести во все ваши проекты. Даже если вы не знаете, как создать библиотеку для iPhone, это хороший повод для изучения.

Простое добавление исходного кода в ваш проект также должно работать нормально.