由于想要了解oc语言中的@autorelease 自动释放池的源码,所以转成的C++代码是什么样子的,在进入项目目录中,执行clang -rewrite-objc ViewController.m时如下错:
简单的解释就是,当我们在语言转换的时候,无法识别<UIKit/UIkit.h>库
此时我们需要在编译的时候让系统识别objective-c的系统库,所以要在编译的时候为期制定相应的sdk路径,那么可以进行一下操作
clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk xxxxx.m
此时确实可以实现想要的效果,但是不能每次在翻译的时候都要输入这么长的路径吧,所以可以使用环境变量这个东东
1.进入终端,键入命令 vim ~/.bash_profile
2.在vim编辑器中输入i进入编辑编辑状态并且键入:alias rewriteoc='clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk'
3.键入完毕,点esc退出编辑状态,再键入:wq退出vim并保存,执行source ~/.bash_profile 这句一定要执行,执行才会生效
图例:
完成以上操作之后进入项目目录,找到你想要编译的文件,执行rewriteoc xxx.m即可成功,图例
则需要的.cpp文件就会出现.
折腾了好久,怪累的,为了以后能记住,也为广大遇到相同问题的同学提供方便,索性记下来!
(*^__^*) 嘻嘻……