【问题标题】:Create libraries that need a common library创建需要公共库的库
【发布时间】:2012-12-10 16:50:24
【问题描述】:

我在一个非常大的 iOS 项目中工作,它有很多类和资源,需要很长时间来索引和编译它们。随着它越来越多,我需要对此做点什么,因为我花费了太多时间等待 IDE 让我工作。

我的第一个想法是将所有图像打包到一个自定义包中,以便 IDE 将其视为单个文件,并且索引和复制它会更快,但我发现包只不过是一个简单的文件夹有一个扩展,所以我猜性能仍然会很慢。然后我读到如果我对图像使用“蓝色文件夹”而不是“黄色组”,Xcode 不会索引它们。但是现在这种方式并不容易,因为我应该替换查找图像的函数以在该文件夹中查找它们(绝对路径?)

所以我的最后一个方法是节省编译时间和索引时间。我想在多个库中模块化我的代码,这样就不需要再次“编译”它,这样 Xcode 也不需要索引源文件。

我已经学习了一些教程,现在我知道如何创建一个静态库并将头文件包含在另一个项目中。但我目前的问题如下。

我的应用程序有几个“独立”模块,所以我想为每个模块创建一个静态库(也许我也会为每个模块生成一个图像包......)。但是所有这些模块都使用一个公共核心,我也想在静态库中维护它。所以,如果我这样做,我将不得不在每个模块库中包含主核心库,这恐怕不是最优化的方式,因为核心的二进制代码会多次出现,对吧?

我想正确的解决方案是为核心生成一个动态库,为模块生成静态库,但我找不到如何生成动态库...此外,我不确定这会是解决办法。

所以我问你:我有什么选择?多次编译核心是我拥有的最佳方法吗? 非常感谢您的帮助!

【问题讨论】:

    标签: ios xcode compilation shared-libraries static-libraries


    【解决方案1】:

    IOS 不支持动态链接,所以这不是一个选项。虽然静态库被添加到其他库中,但它没有嵌入到其他静态库中,您可以在构建时看到这一点,其他库应该在项目文件夹中显示为单独的库,因此每个静态库/project 只会在应用构建中包含一次。

    最后...如果您在同一个工作区中使用静态库,我不确定这是否会为您节省大量时间。我在一些项目中使用静态库,如果我在应用程序上执行清理,然后构建,静态库也会重新构建。

    【讨论】:

    • 好吧,我想我没有正确表达。我的意思是我创建了一个库 libA。然后我创建了一个在内部使用 libA 的库 libB。编译 libB 时,会包含 libA。然后我创建了 libC,它也使用了 libA。还有 libD, libF, ... 我的项目使用那些 libB, libC, libD, ... 但不是直接使用 libA。我的问题是 libA 很大(10MB),所以所有其他的也会很大(实际上,它们的来源很少)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2019-11-18
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多