Clang浅尝辄止

Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器。

我们可以使用clang命令来重写OC的.m文件(重写之后以C++文件的形式展现在相应的文件夹里头.

  1. 首先.我们使用cd命令或者是直接拖动的方式把终端目录改到想要操作的.m文件的目录.(比如,下面我们要重写Person.m)
    Clang浅尝辄止
    Clang浅尝辄止
  2. 然后我们在终端输入clang -rewrite-objc Person.m.
    Clang浅尝辄止
  3. 然后去之前的目录查看.工程里面多了一个叫Person.cpp的C++文件.
    Clang浅尝辄止
  4. 双击该cpp文件就能看到对应.m类的一些实现了(Xcode支持C++).
    Clang浅尝辄止

上面的clang -rewrite-objc XXX.m只是clang的一个小的使用方式.
对于iOS开发.我们知道区分为真机以及simulate(模拟器).两者架构并不相同.如果我们到处成C++文件,想导出指定的真机或者是模拟器的C++文件应该怎么弄呢.那就涉及到了xcrun命令了.
1. 指定iphoneos(真机):
xcrun -sdk iphoneos clang -rewrite-objc Person.m
2. 指定为simulator(模拟器):
xcrun -sdk iphonesimulator clang -rewrite-objc Person.m
3. 我们也知道iOS是有许多版本号的.那么,我们想导出相应的版本的C++文件应该怎么弄呢:

  1. 在终端中,使用xcodebuild -showsdks命令来搜索机器上有的sdk.
    Clang浅尝辄止
  2. 比如我们要导出10.13版本的:
    xcrun -sdk iphonesimulator10.3 clang -rewrite-objc Person.m


  1. 链接错误,一般是引用了三方的库导致的:

  1. 单个路径:使用xcrun -sdk iphonesimulator10.3 clang -rewrite-objc -F路径 Person.m
  2. 多个路径:使用-I头文件路径1 -I头文件路径2 …… -I头文件路径n去分隔多个路径.