我有一个由2个库(libraryA和libraryB)和一个包组成的项目。其中每一个都像项目一样创建,并通过拖动它们在主项目中导入。
只是拖动它们并不足以让Xcode找到所有标题来编译整个项目,所以我不得不使用硬件来破解路径,但这很糟糕,因为路径可以改变,我将无法再次编译这个项目。我想使用像these ones这样的宏来访问这些文件,但在测试了几乎所有这些文件之后,我无法让它工作。
我必须完成编译工作的解决方案如下。
我已经调整了每个库,其公共标题保存在
中/Users/rubberduck/Library/Developer/Xcode/DerivedData/MyProject-dnaimaovsccuvieahmvgttwjnabc/Build/Products/Debug-iphoneos/
使用目标名称,因此在编译后,他们将把他们的公共标题放在
上/Users/rubberduck/Library/Developer/Xcode/DerivedData/MyProject-dnaimaovsccuvieahmvgttwjnabc/Build/Products/Debug-iphoneos/libraryA
和
/Users/rubberduck/Library/Developer/Xcode/DerivedData/MyProject-dnaimaovsccuvieahmvgttwjnabc/Build/Products/Debug-iphoneos/libraryB
现在的问题是libraryB需要libraryA的头来编译。如果这些是兄弟目录,我应该把它放在libraryB的标题搜索路径上以指向libraryA。
注意:我需要一个不是硬编码的路径,而是使用我提到的那些宏之一。
答案 0 :(得分:1)
"Products Directory"
子路径"include/${PRODUCT_NAME}"
。
导入标题时,您将使用#import "header1.h"
而不是#import <MyProduct/header1.h>
。我认为库需要在编译之前构建,但如果它们包含在“Link Binary With Libraries”阶段,那么这不应该是一个问题。
答案 1 :(得分:0)
你可以试试,
添加Xcode可用于动态查找Lib的“源树”变量。 在Xcode偏好设置中&gt; “位置”按钮&gt; “源树”选项卡&gt;创建一个新的Source Tree变量。 对于Lib,创建 LIB_SRC 并让它指向 / path_to_lib / lib / src / 注意:Xcode不允许路径包含任何空格!
答案 2 :(得分:0)
这显然是Xcode的错误或限制。
我唯一的解决方案是在同一个工作区中多次导入项目使用的子项目。
例如:假设我有一个由主项目和libraryB使用的库A.我做Xcode编译所做的就是在同一个工作区导入libraryA两次,一个用于libraryB,一个用于主项目,所有编译都很好。
Xcode 4设计不佳,从界面到引擎,现在我明白了为什么这么多人讨厌它(62%在网站投票中)。