cmake配置

首先我们将ffmpeg所有头文件都导入项目。


头文件全位于include中。那具体的实现类呢,在LIBS中:


那么如何将这些目录是怎么项目关联起来呢,就是在CMAKE中配置:


这里话就是让项目明白,你导入的头文件位于include文件夹中。

因此,在CPP中导入其它的头文件,才不会报错,如:


这里是生成项目时就生成的CPP文件。在此类中导入其它头文件,就会自动从include这个文件夹中去找到 libavcodec这个文件里的头文件。

继续回到CMAKE,这里重点讲下CMAKE的配置:


这里没什么好说的,生成CMAKE时就自动会有此代码,这里旨在将 native-lib 这个类生成一个动态库存。 native-lib直接与JAVA交互。

但实际上,native-lib中,还会引用到其它库,如这里的ffmpeg,该如何配呢。那就是再写一个add_library:


这里是先set了一个FF变量,将路径进行了一个确定。下面的两句是固定写法,先命名了一个库,就是avcodec,这里可以取任意名字,第三行是将这个名字和具体的动态库路径关联起来。

还有一个点,就是 {ANDROID_ABI}  ,这个变量是哪里来的呢,这里是build配置中定义的,如:


在build中的配置,一般只需要自己加上这个Filters就行了,其它的都会自动生成。

再讲回CMAKE,我们已经导入了需要的动态库avcodec,那么怎么将这个库和我们直接交互的cpp关联起来呢:


就要用到target-link_libraries这个语句,第一行 native-lib是我们直接交互的库,第二行开始,如这里的avcodec,就是将其打包进native-lib生成的动态库中! 这样就进行一个动态库的合并!

也就是说,我们配置CMAKE的目的,就是最终会生成一个native_lib的动态库,这个动态库里就包括了avocec这个动态库,也就是说,当生成后,我们就可以去掉CMAKE这个编译环节,免得每次RUN的时候都要重新编译这个动态库浪费时间!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容