向clion项目添加ffmpeg
我想添加ffmpeg到Clion,但我有一些问题。 My MakeLists.txt看起来像这样:向clion项目添加ffmpeg,ffmpeg,cmake,clion,Ffmpeg,Cmake,Clion,我想添加ffmpeg到Clion,但我有一些问题。 My MakeLists.txt看起来像这样: cmake_minimum_required(VERSION 3.10) project(ffmpeg) set(CMAKE_CXX_STANDARD 11) include_directories(libs/ffmpeg/) include_directories(libs/ffmpeg/include/libavutil/) include_directories(libs/ffmpeg/
cmake_minimum_required(VERSION 3.10)
project(ffmpeg)
set(CMAKE_CXX_STANDARD 11)
include_directories(libs/ffmpeg/)
include_directories(libs/ffmpeg/include/libavutil/)
include_directories(libs/ffmpeg/include/libaccodec/)
include_directories(libs/ffmpeg/include/libavdevice/)
include_directories(libs/ffmpeg/include/libavfilter/)
include_directories(libs/ffmpeg/include/libavformat/)
include_directories(libs/ffmpeg/include/)
link_directories(libs/ffmpeg/lib/)
set(SOURCE_FILES main.cpp)
add_executable(ffmpeg main.cpp)
target_link_libraries(
ffmpeg
avcodec
avdevice
avfilter
avformat
avresample
avutil
postproc
swresample
swscale
)
我不确定是否以正确的方式添加了库和包含,因为在我的simple main.cpp中,它无法解析avcodec_配置()。 我的项目布局如下所示:
ffmpeg
-libs
-include
-libavcodec
.
.
.
-lib
-avcodec.lib
-main.cpp
编辑:
现在编译器可以找到所有包含项。但如果我编译,我会得到以下错误:
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lavresample
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[2]: *** [ffmpeg.exe] Error 1
mingw32-make.exe[1]: *** [CMakeFiles/ffmpeg.dir/all] Error 2
mingw32-make.exe: *** [all] Error 2
CMakeFiles\ffmpeg.dir\build.make:96: recipe for target 'ffmpeg.exe' failed
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/ffmpeg.dir/all' failed
Makefile:82: recipe for target 'all' failed
我不建议在
CMakeLists.txt
中硬编码指向头/库的路径;这不是便携式的
- 搜索一个现成的
(可能有用吗?)FindFFmpeg.cmake
- 将其添加到项目目录中(例如,添加到
子目录中)cmake/
- 还有。例如
列表(附加CMAKE\u模块路径“${CMAKE\u源目录}/CMAKE”)
- 然后参考
,${FFMPEG\u LIBRARIES}
和${FFMPEG\u INCLUDE\u DIRS}
${FFMPEG\u DEFINITIONS}
有时您必须修复
FindXXX.cmake
模块。我能够通过创建find-cmake脚本并将它们包含在主CMakeLists.txt中,将预编译的ffmpeg库包含到cmake项目中
完整示例如下:
在我的项目中,FFMPEG_INCLUDE_目录和FFMPEG_LIB_目录由gradle构建脚本传递,您可以手动设置这些目录或以其他方式发现它们
FFMPEG_INCLUDE_目录是FFMPEG安装包含目录的路径,在我的示例中:
/mnt/7fab2260-fb19-41a7-ac7c-816bab2f3b92/install/ffmpeg_build/include
/mnt/7fab2260-fb19-41a7-ac7c-816bab2f3b92/install/ffmpeg_build/lib
FFMPEG_LIB_目录是指向FFMPEG安装库目录的路径,在我的示例中:
/mnt/7fab2260-fb19-41a7-ac7c-816bab2f3b92/install/ffmpeg_build/include
/mnt/7fab2260-fb19-41a7-ac7c-816bab2f3b92/install/ffmpeg_build/lib
确保将CMAKE_模块_路径设置为查找CMAKE脚本所在的目录
构建系统适用于ubuntu 18.04。您显示的项目布局与
CMakeLists.txt
中的目录不匹配“my simple main.cpp无法解析avcodec_配置()”-编译过程中是否出现错误(如“找不到头文件”)或链接过程中出现错误(“未解析符号”)?请详细说明。准确的错误信息将是表达问题的首选方式。我设法让它工作。但是如果我编译它,我会得到以下错误:c:/mingw/bin/./lib/gcc/mingw32/6.3.0/../../../../../../mingw32/bin/ld.exe:找不到-lavresample collect2.exe:错误:ld返回1退出状态mingw32 make.exe[2]:***[ffmpeg.exe]错误1 mingw32 make.exe[1]:***[CMakeFiles/ffmpeg.dir/all]错误2 mingw32-make.exe:**[all]错误2 CMakeFiles\ffmpeg.dir\build.make:96:目标'ffmpeg.exe'的配方失败CMakeFiles\Makefile2:66:目标'CMakeFiles/ffmpeg.dir/all'的配方失败Makefile:82:目标'all'的配方失败