将库包含为二进制与源的注意事项

我正在尝试为iPhone编写SSH客户端,我想使用libssh2开源库来实现。 它是用C语言写的。

我该如何为我的iPhone应用程序包含此C库? 我应该将它编译成我包含在我的应用程序中的二进制文件,还是将所有源代码添加到我的项目中并尝试将其与我的应用程序的其余部分一起编译?

我将这个问题解释为:

“我应该编译一次C库代码,并在我的项目中包含二进制库吗?或者我是否应该包含所有源代码并在每次构建应用程序时编译它?”

这取决于。 我工作的项目之一取决于几个外部库。 基本上,我们有一个简单的规则:

  • 你认为你需要经常更改C库中的代码吗?

    • 如果您要更改代码或经常更新版本,请包含源代码并将其与项目的其余部分一起构建。
    • 如果您不打算经常或根本不更改代码,那么在项目中包含预先构建的二进制文件可能是有意义的。

根据库的大小,您可能希望将其设置为项目中的不同目标,或者作为主项目的子项目,以获得更大的灵活性。

如果我在你的位置,我会提前构建libssh2并在我的iPhone项目中包含二进制库。 当然,我仍然会保留libssh2源代码,以防它确实需要在路上重建。

我有一个90%的iPhone应用程序。 我没有问题将第三方源添加到我的项目和编译。 我正在使用Lua,zLib和libpng而不做任何修改。 我还包括像unistd和libgen这样的标准库,它们只是工作™

Three20 iPhone库有很好的方法可以将他们的库添加到你的xcode项目中。 试一试。

我想你会发现,从长远来看,你最好将它构建成一个独立的库,并将它与你的应用程序连接起来。 这样可以更轻松地集成到未来的应用程序中。 另一个好处是它鼓励代码分离。 如果您对库非常有信心,可以将调试exe链接到库的发布版本并获得一些额外的性能。

在设置库的初始成本之后,我无法想到创建库的任何缺点,如果需要对所有项目进行一些更改,还需要修改一个额外的项目。 即使你不知道如何为iPhone制作图书馆,这也是学习的好借口。

只是将源添加到您的项目也应该正常工作。