Pas*_*cal 52 cocoa frameworks xcode4
我在Xcode 4和嵌套项目中遇到了无数问题,这些问题在Xcode 3.2下运行良好.这是一个我无法解决的基本问题:
我正在构建一个cocoa框架,需要另一个cocoa框架,我有源代码.所以我执行通常的步骤:
.xcodeproj所需框架的文件拖到我的主框架项目中${BUILT_PRODUCTS_DIR}并告诉我它们位于DerivedData/Debug(或Release)位置然后我点击[CMD] + B进行构建,它告诉我它没有找到嵌套框架的头文件.当我检查设置时,用户标题搜索路径包含DerivedData/Debug的路径,里面有嵌套的框架目标,其中包含Versions/A/Headers中的头文件.
我坐在这里,任何人都知道我做错了什么?
当我将用户标题搜索路径更改为时,在构建调试时问题就消失了.但是,当构建Distribution时,这不起作用,因为框架然后使用它们的Release设置,最终在不同的子目录中...${BUILT_PRODUCTS_DIR}/MyFramework.framework/Headers
我的临时解决方案是为嵌套项目定义分布配置.这样就可以找到头文件并且链接器可以成功链接.
Pas*_*cal 53
到目前为止,这是我的综合知识:
使用Xcode 忘记整个公共标题,它是一个PITA,在归档你的应用程序时无法正常工作.相反,在项目级别拥有所有静态库头文件,并告诉您的应用程序在哪里找到它.
通过确保所有目标具有相同的构建配置名称(即向静态库添加"AdHoc"和"Deployment"配置)来减轻您的痛苦.
在构建设置中,将标题搜索路径(如果使用#include <file.h>)或用户标题搜索路径(如果使用#include "file.h")指向静态库项目的目录.如果静态库项目位于您的app目录中,请使用以下命令:
"$(PROJECT_DIR)" (已启用递归)
如果你有一个目录,其中包含a)静态库项目和b)你的应用程序,那么这应该工作:
"$(PROJECT_DIR)/.." (已启用递归)
如果子模块包含已编译的库,请将库搜索路径设置为:
"$(TARGET_BUILD_DIR)"
确保您使用的所有静态库项目都设置为" 跳过安装"YES.
同样,在任何静态库中都没有公共头文件(Build Phases»Copy Headers),否则Xcode将无法存档应用程序.
确保告诉Xcode何时构建静态库,如Apple的Tech Doc中所示.
旧答案:
我仍然没有找到静态库的这个问题的真正解决方案.对我有用的是:
$(BUILT_PRODUCTS_DIR)到用户标题应用程序的搜索路径(通过递归检查) - >在运行应用程序时使用这有效,应用程序找到头文件并自行构建,最终在DerivedData // Build/Products/AdHoc-iphoneos /作为应用程序包.按照TestFlightApp.com的这些简单说明(死链接),我可以将此应用程序打包到IPA中并发送它.只需选择从Xcode 存档应用程序再次找不到标题,即使它们确实位于AdHoc-iphoneos构建目录中.