目錄
一. 轉換方法
二. 常見報錯
三. 指定 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進入編輯編輯狀態(tài)并且輸入:
alias rewritecpp=’clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk’
- 按
esc
退出編輯狀態(tài), 再輸入:wq
退出vim并保存 - 執(zhí)行
source ~/.bash_profile
命令 - 執(zhí)行
~/.bash_profile
- 進入項目目錄,找到你想要編譯的文件丹鸿,執(zhí)行
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