目录
一. 转换方法
二. 常见报错
三. 指定 sdk
一:转换方法
- 打开终端 cd
目标文件所在文件夹
- clang -rewrite-objc
目标类名.m
-o目标类名.cpp
- 打开文件夹就能找到你转换的
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 起个别名简化,方法如下
- 终端输入命令
vim ~/.bash_profile
- 在vim界面输入i进入编辑编辑状态并且输入:
alias rewritecpp=’clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk’
- 按
esc
退出编辑状态, 再输入:wq
退出vim并保存 - 执行
source ~/.bash_profile
命令 - 执行
~/.bash_profile
- 进入项目目录,找到你想要编译的文件,执行
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