cpp转换(OC转C/C++)

image.png

目录
一. 转换方法
二. 常见报错
三. 指定 sdk

一:转换方法
  1. 打开终端 cd 目标文件所在文件夹
  2. clang -rewrite-objc 目标类名.m -o 目标类名.cpp
  3. 打开文件夹就能找到你转换的 xxx.cpp文件
二:常见报错

2.1 报错 fatal error: 'UIKit/UIKit.h' file not found 如图

2.2 更换转换命令即可,如下:

clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk 目标类名.m

2.3 上面命令太长,可以通过 alias 起个别名简化,方法如下

  1. 终端输入命令 vim ~/.bash_profile
  2. 在vim界面输入i进入编辑编辑状态并且输入:

alias rewritecpp=’clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk’

  1. esc退出编辑状态, 再输入:wq退出vim并保存
  2. 执行 source ~/.bash_profile 命令
  3. 执行 ~/.bash_profile
  4. 进入项目目录,找到你想要编译的文件,执行 rewritecpp xxx.m 即可成功
三:指定sdk

有的oc代码要转成c代码时,在真机和模拟器上差别还是挺大的。如果需要指定SDK,那么要结合xcrun命令

  • 指定真机 xcrun -sdk iphoneos clang -rewrite-objc xxx.m
  • 指定模拟器 xcrun -sdk iphonesimulator clang -rewrite-objc xxx.m
  • 指定版本 xcrun -sdk iphonesimulator14.5 clang -rewrite-objc xxx.m

你可能感兴趣的:(cpp转换(OC转C/C++))