Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向clion项目添加ffmpeg_Ffmpeg_Cmake_Clion - Fatal编程技术网

向clion项目添加ffmpeg

向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/

我想添加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/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'的配方失败