我希望将ffmpeg添加到Clion,但我遇到了一些问题。 我的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/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
)
我不确定是否以正确的方式添加了库和包含,因为在我的简单main.cpp中它无法解析avcodec_configuration()。 我的项目布局如下:
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
答案 0 :(得分:0)
我不建议您将CMakeLists.txt
中的标题/库的路径硬编码。这不是便携式的。
FindFFmpeg.cmake
(也许this one可以吗?),cmake/
子目录中),list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
。${FFMPEG_LIBRARIES}
,${FFMPEG_INCLUDE_DIRS}
和${FFMPEG_DEFINITIONS}
。有时您必须修复FindXXX.cmake
模块。
答案 1 :(得分:0)
通过创建find cmake脚本并将它们包含在主CMakeLists.txt中,我能够将预编译的ffmpeg库包含到cmake项目中。
完整的示例在这里:https://github.com/tomkordic/Java-native-HTTP/tree/master/src/main/cpp
在我的项目中,gradle构建脚本传递了FFMPEG_INCLUDE_DIRECTORY和FFMPEG_LIB_DIRECTORY,您可以手动设置它们或以其他方式发现它们。
在我的情况下,FFMPEG_INCLUDE_DIRECTORY是ffmpeg安装包含目录的路径:
/mnt/7fab2260-fb19-41a7-ac7c-816bab2f3b92/install/ffmpeg_build/include
FFMPEG_LIB_DIRECTORY是ffmpeg安装lib目录的路径,在我的情况下:
/mnt/7fab2260-fb19-41a7-ac7c-816bab2f3b92/install/ffmpeg_build/lib
确保将CMAKE_MODULE_PATH设置为查找cmake脚本所在的目录。
构建系统适用于ubuntu 18.04。