将ffmpeg添加到clion项目

时间:2018-06-04 08:42:11

标签: ffmpeg cmake clion

我希望将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

2 个答案:

答案 0 :(得分:0)

我不建议您将CMakeLists.txt中的标题/库的路径硬编码。这不是便携式的。

  • 搜索现成的FindFFmpeg.cmake(也许this one可以吗?),
  • 将其添加到您的项目目录(例如,添加到cmake/子目录中),
  • connect itCMAKE_MODULE_PATH。例如。 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。