objective-c - 重复的符号(工作区中的两个项目使用相同的代码)

标签 objective-c xcode macos static-libraries duplicate-symbol

A 是一个模块项目。有一些测试目标,相关的可重用代码编译在一个单独的(静态库)目标中。 A 使用第三方 Lumberjack 日志库。 Lumberjack 代码被简单地放入项目中。

B 是一个不同的模块项目,但它具有与 A 相同的属性。

C 是主项目。它取决于 AB。它链接AB 的库。

编译 C 将导致重复的 Lumberjack 符号。

我怎样才能拥有多个独立的模块项目,以便...

  1. 他们互不认识,
  2. 使用相同的第三方代码,
  3. 可以自己编译测试,
  4. 包含在没有重复问题的主项目中?

最佳答案

因此,详细说明 sergio 的 answer ,我能够成功构建测试设置,如下所示。

  1. 我将 Lumberjack 代码包含在一个单独的项目中,该项目将 Lumberjack 构建为静态库。
  2. 我创建了一个新项目 ProjectA,其中包含一个静态库目标 ModuleA 和一个测试应用目标 DemoA。我将 Lumberjack 项目文件夹复制到 ProjectA 的项目文件夹中,然后将其添加为子项目。我没有使 ModuleA 依赖于 Lumberjack 或在 ModuleA 中链接 Lumberjack。相反,我使 DemoA 依赖于这两个库并链接这两个库。这样,我就可以编译测试目标,但库目标不包括 Lumberjack。
  3. 我创建了第二个项目 ProjectB,其模拟设置为 ProjectA
  4. 在主项目中,我将ProjectAProjectB 和Lumberjack 作为子项目。不幸的是,这将使 Lumberjack 在主项目中被包含 3 次,这有点不方便且难看(例如,在选择依赖目标时,您无法真正分辨出哪个是哪个)。
  5. 最后,我使主要项目的目标依赖于 Lumberjack、ModuleAModuleB 并链接所有三个库。现在主工程可以编译无重复符号错误,子模块也可以自己编译测试了。

关于objective-c - 重复的符号(工作区中的两个项目使用相同的代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141639/

相关文章:

swift - 如何在沙盒 macOS 应用程序和脚本(或程序)之间进行通信

ios - UIBarButtonItem 图像突出显示

objective-c - 在哪里调用【self addSubView】?

c++ - IOServiceAddMatchingNotification 问题

ios - UIscrollView 中的 UILabel 无法识别 UISwipegesture

android - Eclipse - Android 10 SDK 与 Mac OSX 不兼容

java - 将 Eclipse 连接到 mysql mac os x jdbc 驱动程序

ios - 从 Obj-c 到 swift 的 Segue 找不到属性

android - 简单的 iOS POST http 请求

ios - 在 Xcode 中符号化崩溃文件