iPhone静态库分发和发布构建错误(但不适用于调试)

时间:2009-05-26 23:19:32

标签: iphone cocoa-touch xcode

更新

丹尼尔很接近,这不是搜索路径。 GCC 4.2下的前缀标题设置为: $(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h

当我在前2次梳理时,我错过了。 我删除它,现在一切都很好。


原始问题

我一直在使用/使用静态库构建产品大约一周,没有任何问题。

我第一次尝试进行分发构建(用于临时测试),我在整个地方都遇到了错误。

错误,奇怪地说它无法找到Appkit标头。这很奇怪,因为它是一个iPhone应用程序,不应该链接到Appkit标题

此外,当我从调试切换到发布/发布时,库名“libFJSCodeDebug.a”变为红色。我认为这一定是一个很大的线索。

为了测试,我复制了调试配置并将其重命名为release。这建好了。所以似乎问题出在配置的某个地方。下面是我构建时在Xcode中获得的代码片段。 (注意:我命名了我的目标FJSCodeDebug,即使它将用于调试和发布版本)

Building target “FJSCodeDebug” of project “FJSCode” with configuration “Release” — (169 errors)
    Checking Dependencies
        cd /[redacted]/FJSCode
    setenv PATH "/DeveloperBeta/Platforms/iPhoneOS.platform/Developer/usr/bin:/DeveloperBeta/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /DeveloperBeta/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -x objective-c-header -arch armv6 -fmessage-length=0 -pipe -std=c99 -Wno-trigraphs -fpascal-strings -fasm-blocks -Os -Wreturn-type -Wunused-variable -isysroot /DeveloperBeta/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk -gdwarf-2 -mthumb -miphoneos-version-min=3.0 -iquote /[redacted]/build/FJSCode.build/Release-iphoneos/FJSCodeDebug.build/FJSCodeDebug-generated-files.hmap -I/[redacted]/build/FJSCode.build/Release-iphoneos/FJSCodeDebug.build/FJSCodeDebug-own-target-headers.hmap -I/[redacted]/build/FJSCode.build/Release-iphoneos/FJSCodeDebug.build/FJSCodeDebug-all-target-headers.hmap -iquote /U[redacted]/build/FJSCode.build/Release-iphoneos/FJSCodeDebug.build/FJSCodeDebug-project-headers.hmap -F/[redacted]/build/Release-iphoneos -I/[redacted]/build/Release-iphoneos/include -I/Users/coreyfloyd/Xcode/ProductionProjects/build/FJSCode.build/Release-iphoneos/FJSCodeDebug.build/DerivedSources/armv6 -I/[redacted]/build/FJSCode.build/Release-iphoneos/FJSCodeDebug.build/DerivedSources -c /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h -o /var/folders/R+/R+ofDLtuH1GOYQ1ZQ2C5mk+++TI/-Caches-/com.apple.Xcode.501/SharedPrecompiledHeaders/AppKit-gihvhjsfuggoevbehiszhgrzcska/AppKit.h.gch
/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:11:33: error: AppKit/AppKitDefines.h: No such file or directory
/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:12:32: error: AppKit/AppKitErrors.h: No such file or directory
/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:13:37: error: AppKit/NSGraphicsContext.h: No such file or directory
/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:14:35: error: AppKit/NSAccessibility.h: No such file or directory
/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:15:32: error: AppKit/NSActionCell.h: No such file or directory

...... (continues for everything in AppKit)......


Build failed (169 errors)

我正在寻找2种解决方案中的一种: 显然,修复发布版本不会出现这些错误 要么 调整调试配置以获得发布配置所需的所有重要设置。

任何想法??

2 个答案:

答案 0 :(得分:1)

-c /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h

让我相信你的构建目标正在尝试编译AppKit.h由于某种原因(虽然我认为它根本不应该这样做),和/或它正在寻找错误的地方(即root / System而不是SDK / Developer / Platforms /...).

您应该仔细检查构建设置库/框架搜索路径,并且AppKit.h不在编译阶段。

答案 1 :(得分:0)

您的项目是否包含Mac OS产品?您确定在框架组中没有意外地包含Mac库/框架吗?

在SDK2.2.1中,我不知道为什么,但总是让我感觉到的是“Active SDK”和“Active Executable”变得不同步(在构建配置下拉列表中)。这导致奇怪的链接器错误,其中iPhone试图动态地链接其库。每当我从调试/发布或设备/模拟器切换时,此设置似乎偶尔会失去同步。

也许是一个类似的案例,如果没有看到实际的项目设置,很难说清楚。