2

不管是在使用FFmpeg时,或者学习FFmpeg的源码时,能调试跟踪代码,都是非常方便的。然而,跟无数的开源库一样,ffmpeg是用makefile来管理的,并不能直接生成xcode的项目。

好在Xcode提供了一个External Build的功能。操作流程如下:

  • 新建一个External Build System的空项目ffmpeg。
New->Project->Cross-platform->External Build System

WeChat89766cca4901f11daed2fbba5b1db633.png

  • 在Info栏填写ffmpeg库的地址WeChat01f4029edce2250b6a1a49f59f794b6e.png
  • 导入源代码

WeChat5e413e1eba2ded015c76b5c8fc35c12b.png

  • 构建ffmpeg项目

去ffmpeg源码目录,按需求配置./configure。为了调试,需要在参数里增加--enable-debug=3 --disable-optimizations --disable-asm --disable-stripping。然后在Xcode中像普通项目一样构建。

注:我测试的时候直接构建报了一个错,然后去ffmpeg目录下make一次,成功之后,再重新构建OK了。不确定这一步是否必须。

  • 新建测试项目FFmpegTest,加入同一个workspace。这样放:

WeChat4b36564afd7c9cda29e3666532767cf5.png

并设置FFmpegTest依赖项目ffmpeg。
WeChat48bbb3594e7f129f7872d491bbabbb82.png
设置FFmpetTest依赖ffmpeg的库。ffmpeg生成的库在各个模块的libxxx目录下。
并配置FFmpegTest的include,lib路径。
WeChatf82e790efc92e6e1df47b6fb3c46493f.png

由于依赖的静态库,还需要添加ffmpeg依赖的系统库(红框部分)。
WeChateb08257851959dd1bcb6366b4d50d44a.png

  • 效果

现在可以调试了,亲测,可以单步跟踪,可以断点。不过无法通过跳转找到代码。

参考文章:
xcode5 导入 makefile
ffmpeg编译时保留调试信息


夜风西
10 声望4 粉丝