A
是一个模块项目。有一些测试目标,相关的可重用代码编译在一个单独的(静态库)目标中。 A
使用第三方 Lumberjack 日志库。 Lumberjack 代码被简单地放入项目中。
B
是一个不同的模块项目,但它具有与 A
相同的属性。
C
是主项目。它取决于 A
和 B
。它链接A
和B
的库。
编译 C
将导致重复的 Lumberjack 符号。
我怎样才能拥有多个独立的模块项目,以便...
- 他们互不认识,
- 使用相同的第三方代码,
- 可以自己编译测试,
- 包含在没有重复问题的主项目中?
最佳答案
因此,详细说明 sergio 的 answer ,我能够成功构建测试设置,如下所示。
- 我将 Lumberjack 代码包含在一个单独的项目中,该项目将 Lumberjack 构建为静态库。
- 我创建了一个新项目 ProjectA,其中包含一个静态库目标 ModuleA 和一个测试应用目标 DemoA。我将 Lumberjack 项目文件夹复制到 ProjectA 的项目文件夹中,然后将其添加为子项目。我没有使 ModuleA 依赖于 Lumberjack 或在 ModuleA 中链接 Lumberjack。相反,我使 DemoA 依赖于这两个库并链接这两个库。这样,我就可以编译测试目标,但库目标不包括 Lumberjack。
- 我创建了第二个项目 ProjectB,其模拟设置为 ProjectA。
- 在主项目中,我将ProjectA、ProjectB 和Lumberjack 作为子项目。不幸的是,这将使 Lumberjack 在主项目中被包含 3 次,这有点不方便且难看(例如,在选择依赖目标时,您无法真正分辨出哪个是哪个)。
- 最后,我使主要项目的目标依赖于 Lumberjack、ModuleA 和 ModuleB 并链接所有三个库。现在主工程可以编译无重复符号错误,子模块也可以自己编译测试了。
关于objective-c - 重复的符号(工作区中的两个项目使用相同的代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141639/