Search code examples
objective-ciosxcodecommand-linexcodebuild

iOS: XCode 4.5: xcodebuild error - fatal error: 'UIKit/UIKit.h' file not found


So I would like to use xcodebuild in Terminal to create a build from a test application (called RunTeszt2). The app is an iOS single view application with nothing in it, just created and closed.

When I try this from the Terminal, the build fails.

xcodebuild -target "RunTeszt2" -sdk "$iphoneos5" -configuration Debug

The error is:

/Users/toodygarik/Desktop/RunTeszt2/RunTeszt2/RunTeszt2-Prefix.pch:12:13: fatal error: 'UIKit/UIKit.h' file not found #import <UIKit/UIKit.h>

The following build commands failed:
ProcessPCH /var/folders/6s/cjw35hhs5lb6wpnx9m8lr2km0000gn/C/com.apple.Xcode.501
/SharedPrecompiledHeaders/RunTeszt2-Prefix-bxwegbsdjylasccydwchfkbjadur/
RunTeszt2-Prefix.pch.pth RunTeszt2/RunTeszt2-Prefix.pch normal i386 objective-c
com.apple.compilers.llvm.clang.1_0.compiler

When I run the app from XCode (4.5), the build completes and everything is ok. I checked the console.app log when running the app from XCode and it does not display the error message above.

What is causing this issue?

EDIT: Based on H2CO3's comment, I edited the Other C Flags entry of the project's Build Settings, like this:

-isysroot $SDKROOT

... and now that particular issue is solved. I'm back to my other xcodebuild related issue: iOS: XCode 4.4.1: xcodebuild error - Unable to read diagnostics from file

Thanks, H2CO3!


Solution

  • You have to specify the development sysroot of the particular OS you're targetting, or else the compiler and linker cannot find the headers and libraries. Add -isysroot <SYSROOT> to the compiler and linker flags, where SYSROOT should be the full path of the iPhoneOSXXX.sdk directory (XXX is the version number of iOS).