在xcode里使用预编译头文件很简单。FFmpeg通常都是用命令行编译,所以我们需要研究一下如何在命令行中使用PCH文件。
PCH文件官方文档可以参考 https://clang.llvm.org/docs/PCHInternals.html。在源文件中,它其实和普通的Header文件并无两样,但是clang不只是简单include它,而是先编译出中间文件(AST File),下次直接使用中间代码。
官网上的编译方法是旧的,新的编译流程是(Apple LLVM version 9.0.0 (clang-900.0.39.2):
# 第一步,编译pch文件
clang -x c-header my.h -o my.pch
# 第二步,使用pch文件
clang -include-pch my.pch test.c -o test
就这么简单!但是有一些坑需要注意:
- 针对不同arch,要编译不同的pch文件
- -include-pch只能带一个文件。多个文件解决方法是在my.h里include
- 这个坑绝对想不到。加上pch或,编译器会关闭inline优化。解决方法是把
static inline
替换为static __attribute__(always_inline)) inline
,强制打开优化
广告时间:
还在为选择播放器烦恼,究竟是用原生的AVPlayer,还是简单基于FFmpeg的kxmovie,又或者是巨复杂的ijkplayer?如果你不想花时间处理各种奇奇怪怪的bug,也不想再界面交互上花太多心思,试一试SuperPlayer.
网友评论