美文网首页
vs CMakeLists 配置 ffmpeg

vs CMakeLists 配置 ffmpeg

作者: FM_1ad7 | 来源:发表于2020-10-30 15:44 被阅读0次

原文连接:https://blog.csdn.net/u010632547/article/details/105843488
ffmpeg工具包和本篇测试代码在如下

先用CMkae创建一个项目,之后在该项目中配置ffmpeg

项目创建成功后,解压ffmpeg工具包

解压之后,有3个文件夹

配置CMakeLists.txt

在创建的项目中,找到CMakeLists.txt

这个CMakeLists.txt类似于java中的build.gradle文件,功能是告知Cmake.exe工具要如何去构建当前项目

1.先配置ffmpeg头文件的根目录

我们想要使用ffmpeg中提供的函数,那么就要确定头文件的位置。ffmpeg中的头文件都是放在include中,因此,我们可以在CMakeLists.txt中配置include的路径。配置代码的第5行

cmake_minimum_required (VERSION3.8)

#能够在 编码的时候 使用ffmpeg的函数

# 设置头文件的查找位置

include_directories("D:/ffmpeg-20180813-551a029-win64-dev/include")

# 将源代码添加到此项目的可执行文件。

add_executable (CMakeProject4"CMakeProject4.cpp""CMakeProject4.h")

2.配置ffmpeg库的根目录

除了配置头文件之外,ffmpeg自身的函数也调用了某些库,这些库都放在lib文件夹里,因此我们还要配置这些库的根目录

库的配置看第8行

cmake_minimum_required (VERSION3.8)

#能够在 编码的时候 使用ffmpeg的函数

# 设置头文件的查找位置

include_directories("D:/ffmpeg-20180813-551a029-win64-dev/include")

# 设置库的查找目录jar

link_directories("D:/ffmpeg-20180813-551a029-win64-dev/lib")

# 将源代码添加到此项目的可执行文件。

add_executable(CMakeProject4"CMakeProject4.cpp""CMakeProject4.h")

3.设置我们程序将要链接的ffmpeg库

源代码变为可执行程序,需要经过编译-链接,两个步骤。编译好理解,就是将源代码翻译成机器指令,而链接是将其他编译好的机器指令和我们自己的机器指令进行结合.,这里的其他编译好的机器指令其实指的就是库,因为库中的代码都是经过编译的。

因为我们的程序引用到了ffmpeg中的代码,所以在链接的时候也要链接ffmpeg中的库,在lib文件下

凡是以lib结尾的文件都是ffmpeg的库,我们在CMakeLists.txt中,看16行,将这些库都引入

#设置编译链接的库ffmpeg

cmake_minimum_required(VERSION3.8)

#能够在 编码的时候 使用ffmpeg的函数

# 设置头文件的查找位置

include_directories("D:/ffmpeg-20180813-551a029-win64-dev/include")

# 设置库的查找目录 jar

link_directories("D:/ffmpeg-20180813-551a029-win64-dev/lib")

# 将源代码添加到此项目的可执行文件。

add_executable(CMakeProject4"CMakeProject4.cpp""CMakeProject4.h")

#设置编译链接的库 ffmpeg

target_link_libraries( CMakeProject4 avutil avcodec avfilter  avdevice avformat postproc swresample )

这里需要注意的是target_link_libraries 中的 CMakeProject4 和add_executable 中的CMakeProject4 名字要一样,这表示要将这些库都集成到add_executable 生成的CMakeProject4.exe这个可执行文件中。

4将ffmpeg的dll拷贝到C:\Windows\System32

最后将dll中的所有dll文件拷贝到C:\Windows\System32

到此,ffmpeg的环境算是配置完成了,接下来,就通过代码来验证下,我们是否配置成功

完整测试代码如下

#include"CMakeProject4.h"

usingnamespacestd;

extern"C"{

#include<libavcodec/avcodec.h>

#include<libavformat/avformat.h>

}

intmain()

{

//输出版本号

cout<< av_version_info() <

cout<<"Hello CMake。"<

system("pause");

return0;

}

看到如下结果,说明配置成功

这里做个解释

extern c

由于ffmpeg是纯C代码写的,但当前我们的项目环境又是C++,在C++中引入C语言的头文件,一定要将.h用extern C包裹,包裹后,编译在编译头文件中的内容时,才会以C语言的标准去编译头文件,如果不用extern c 包裹,那么编译会以C++的标准编译头文件。

av_version_info()

是ffmpeg中的一个函数,若有输出内容,说明我们配置成功了。

相关文章

网友评论

      本文标题:vs CMakeLists 配置 ffmpeg

      本文链接:https://www.haomeiwen.com/subject/yhedvktx.html