Xcode4工作区共享项目

3
我正在尝试使用新的Xcode4工作区功能来迁移一些有依赖关系的Xcode3项目。我有一个创建静态库的项目,然后是一个依赖于静态库的应用程序项目。所以,如指南所述,我创建了一个新的工作空间,并将这两个项目都拖入了工作空间中。但是,当我构建我的应用程序时,它无法找到来自我的静态库的头文件。我得到了“没有这样的文件或目录”错误。我的意图是让Xcode自动检测依赖关系。但是,不确定我做错了什么,我无法使其正常工作。 非常感谢任何帮助。也没有太多文档可供参考。
3个回答

3
经过几个烦人的小时后,我可能找到了一种解决方案(仍然不确定这是否是正确的方法)。
  1. 创建一个新的工作区
  2. 添加共享库项目
  3. 将应用程序项目添加到共享库下面(而不是内部)
  4. 打开共享库的构建阶段,并确保在复制标头时将其分组为公共
  5. 在应用程序的构建设置中输入“BUILD_PRODUCTS_DIR \ usr \ local \ include”中的Header Search Paths
  6. 并在目标的构建阶段中包含对静态库(共享库)的链接

进行清理和构建,所有内容均已成功构建。

但是,我仍然不确定这是否是正确的方法,因为根据Xcode4指南,不需要更改设置,只需将项目添加到工作区即可处理一切。希望有一天我能找到正确的解决方案并使用它。

谢谢 贾维德


1
将USER_HEADER_SEARCH_PATHS设置为$(TARGET_BUILD_DIR)/usr/local/include $(DSTROOT)/usr/local/include。 - ShahidAzim

2
这至少有几种方法可以实现。
我通常会为主目标设置用户头搜索路径构建设置的值,指向库路径。只需在构建设置编辑器搜索框中键入“user header”,即可找到它。
如果您要使用的是一个经常使用的库,最好为其设置源树设置。这位于XCode首选项->源树中。添加一个条目,输入库源的路径,并给它一个合理的设置名称,例如XXLIBRARY_SOURCE。然后在用户头搜索路径(或任何其他需要库路径的构建设置)中,您可以将$(XXLIBRARY_SOURCE)用作路径。
一个更简单但不太灵活的替代方案就是将库的头文件拖到主项目中。

2
谢谢Cris,我在Xcode3中已经这样设置了,效果很好,但是我认为Xcode4的工作区功能可以让你设置项目并自动检测依赖关系。我以为在Xcode4中可以最小化设置,但看起来不行。 - user320587
我曾经希望过同样的事情,但是看起来XCode 4的“隐式依赖性”功能要有限得多:https://devforums.apple.com/message/383410#383410。我之所以说“看起来”,是因为苹果公司对该功能的文档描述不够清晰。 - Cris

2
问题似乎在于Xcode环境变量报告了错误的位置。例如,$(TARGET_BUILD_DIR) 被翻译成:
/build/Debug/
但是当使用工作区时,会在该路径中插入一个额外的文件夹:
/build/products/Debug
Xcode似乎忽略或无法处理这个文件夹。

有没有什么方法可以绕过这个问题。我得出了相同的结论,$(BUILT_PRODUCTS_DIR) 在构建过程中是可以的,但是当它只是为用户标头路径执行代码完成时就不行了。看起来我们需要使用静态目录来存储标头文件? - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接