无法使用命令行构建iOS项目,但通过Xcode接口很好

时间:2012-08-05 15:48:54

标签: ios xcode restkit xcodebuild

我有一个Xcode项目。在交互式Xcode中,我可以使用Ad_Hoc_Distribution配置运行/构建/存档,但是当我运行时:

/usr/bin/xcodebuild -configuration Ad_Hoc_Distribution clean build

在我的项目中,我收到一个错误:

/Users/esg/Documents/app-ios/testapp/testapp/AppDelegate.h:14:9: fatal error: 'RestKit/RestKit.h' file not found
#import <RestKit/RestKit.h>
    ^
1 error generated.

当它通过接口工作时会导致命令行失败的原因是什么?

2 个答案:

答案 0 :(得分:2)

我的团队遇到了同样的问题。从Xcode 4.3.2升级到4.4.1后,以前找不到的文件不再存在。

通过比较xcodebuild与Xcode自己的构建日志的输出,然后比较我们的Xcode 4.3.2构建日志,我们发现xcodebuild和Xcode IDE不再构建具有相同的头依赖性。当xcodebuild运行4.4.1版本时,它会对包含文件使用不正确的基本目录,该目录不包括通向.xcodeproj目录的整个当前路径。文件夹路径中的最后两个目录节点似乎被截断。

但是从Xcode IDE构建工作正常。

我们通过添加正确的标头路径解决了这个问题,正如Xcode报告的那样,它是一个额外的标头依赖:

corporate info redacted to protect, well, me

使用xcodebuild时,

$(SRCROOT)似乎被错误地解释了。它应该包含我在第二行中插入的两个子目录。

我只能得出结论,xcode / xcodebuild交互中存在一个成熟而又辛辣的新错误,但你可以修复你的头依赖关系,至少可以编译。

答案 1 :(得分:1)

请参阅我自己的问题。

xcodebuild header files not found in ReskIt

我通过改变一切来解决它,但通过添加工作区和方案并使用它来构建。所有标头设置都与为Xcode GUI设置的设置相同。