Clang(LLVM) compile with frameworks
Asked Answered
L

2

6

I am using:

clang -ObjC -framework UIKit -o /var/compiled/c /Documents/Source/main.m

In OS X terminal. I also tried UIKit.framework, but I am getting

Fatal Error: 'UIKit/UIKit.h' not found

with both.

Any suggestions?

Thanks

Leyden answered 5/5, 2013 at 18:6 Comment(3)
Can you be more specific.Catapult
How did you get this error.Catapult
When using 'clang -ObjC -framework UIKit -o /var/compiled/c /Documents/Source/main.m' in OS X terminalLeyden
R
4

Compiling for iOS without using Xcode is not easy. In your case, you're trying to use an iOS framework but you're using neither the iOS toolchain's compiler nor the iOS SDK.

If you look at the compile transcript for an Xcode project you'll see some of the flags that are necessary. Things you'll need include:

  • xcrun -sdk iphoneos clang to choose the correct compiler and SDK
  • -arch armv7s to choose the correct CPU architecture
  • -mios-version-min=6.1 to set a minimum deployment target

Some older versions of Xcode also require -isysroot=/path/to/iPhoneOS6.1.sdk to choose the correct SDK because xcrun did not do it automatically.

Rigdon answered 6/5, 2013 at 22:24 Comment(0)
D
5

This has been already answered in the Apple developer forum, you can find the whole discussion in here. In the answer marked as the solution to the question they say:

1 - check your PATH variable first:

$ echo $PATH

2 - assuming /System/Library/Frameworks is not included in PATH, add it:

$ PATH=$PATH:/System/Library/Frameworks

3 -now we're ready for Mr. Kochun's incantation:

$ clang -fobjc-arc -framework Foundation main.m prog1
Dilatometer answered 5/5, 2013 at 18:47 Comment(7)
I did find that too, but it didn't help me. What shall I do after specifying the 'PATH'? 'clang -fobjc-arc -framework Foundation -framework UIKit ...' Does give me the same error.Leyden
have you tried making export $PATH after set the new value?Dilatometer
moreover, in the new version of the Mac OS the right path is /Library/FrameworksDilatometer
I have it installed on /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/Dilatometer
For me it's /System/Library/Frameworks also tried 'export $PATH'. Didn't work for me.Leyden
So I'm now trying 'clang -fobjc-arc -framework UIKit -o o main.m' still getting the same error. Also tried with Foundation and UIKit.Leyden
-iframework<arg> - Add directory to SYSTEM framework search pathPearlypearman
R
4

Compiling for iOS without using Xcode is not easy. In your case, you're trying to use an iOS framework but you're using neither the iOS toolchain's compiler nor the iOS SDK.

If you look at the compile transcript for an Xcode project you'll see some of the flags that are necessary. Things you'll need include:

  • xcrun -sdk iphoneos clang to choose the correct compiler and SDK
  • -arch armv7s to choose the correct CPU architecture
  • -mios-version-min=6.1 to set a minimum deployment target

Some older versions of Xcode also require -isysroot=/path/to/iPhoneOS6.1.sdk to choose the correct SDK because xcrun did not do it automatically.

Rigdon answered 6/5, 2013 at 22:24 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.