探究OC的本质时,使用xcrun -sdk iphoneos clang ....代码将OC转成C++代码时报错

在main.m所在的文件夹,使用命令行

crun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o mainarm64.cpp
  • 报错:
xcrun: error: SDK "iphoneos" cannot be located
warning: include path for stdlibc++ headers not found; pass '-std=libc++' on the
      command line to use the libc++ standard library instead
      [-Wstdlibcxx-not-found]
main.m:9:9: fatal error: 'Foundation/Foundation.h' file not found
#import 
        ^~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.

查找原因:一般SDK问题和Xcode有关系,发现是Xcode路径判断错误。
解决方法:给Xcode命令行工具指定路径 或者在有多个xcode命令行工具版本的时候,指定使用哪个版本的命令行工具
新建终端页面,键入命令:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/

问题解决,OC生成C++:

songleia@RaysongdeMacBook-Pro:~/Desktop/底层原理学习代码/OC对象的本质/OC对
象的本crun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o mainarm64.cpp
warning: include path for stdlibc++ headers not found; pass '-std=libc++' on the
      command line to use the libc++ standard library instead
      [-Wstdlibcxx-not-found]

1 warning generated.
warning: include path for stdlibc++ headers not found; pass '-std=libc++' on the
      command line to use the libc++ standard library instead
      [-Wstdlibcxx-not-found]
1 warning generated.

Mac操作环境:

songleia@RaysongdeMacBook-Pro:~$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.1
BuildVersion:   18B75
songleia@RaysongdeMacBook-Pro:~$ uname -a
Darwin RaysongdeMacBook-Pro.local 18.2.0 Darwin Kernel Version 18.2.0: Fri Oct  5 19:41:49 PDT 2018; root:xnu-4903.221.2~2/RELEASE_X86_64 x86_64

另一种OC转C++方法(不推荐)----因为不同平台支持的代码不一样

clang -rewrite-objc main.m -o main.cpp

你可能感兴趣的:(探究OC的本质时,使用xcrun -sdk iphoneos clang ....代码将OC转成C++代码时报错)