如何设置CMake查找本地包FFmpeg?

问题描述 投票:0回答:2

我正在尝试使用 FFmpeg 包编写 CMakeLists,并在 Windows 和 Linux 上进行编译。 首先从 FFmpeg-Builds 共享版本

下载

我想象项目的结构是这样的:

<project root>
deps/
  ffmpeg/
    win-x64/
      incluve/
      lib/
      bin/
    linux-x64/
      incluve/
      lib/
      bin/
src/
CMakeLists.txt

如何帮助CMake找到库:avcodec、avformat、avutil等? 也许在文件夹

lib/pkgconfig
中使用 PkgConfig 可以指定路径。 但我不知道怎么办

c++ ffmpeg cmake build
2个回答
2
投票

以下内容对我来说在 Linux 上使用 cmake 效果很好。 您必须找到 Windows 的等效项。 我在 Windows 上使用 ffmpeg,但没有使用 cmake(即直接在 Visual Studio 项目中)。

  1. 安装pkg-config、nasm:
    sudo apt-get install -y pkg-config

    sudo apt-get install nasm 
  1. 下载ffmpeg源代码:

    https://ffmpeg.org/download.html

  2. 构建 ffmpeg 并安装它:

    tar -xvf <downloaded_filename>
    cd /root/folder/with/ffmpeg/src
    ./configure
    make
    sudo make install 
    
  3. 将以下内容添加到您的 CMakeLists.txt:

    一开始:

     find_package(PkgConfig REQUIRED)
     pkg_check_modules(LIBAV REQUIRED IMPORTED_TARGET
         libavdevice
         libavfilter
         libavformat
         libavcodec
         libswresample
         libswscale
         libavutil
     )
    
     set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
    

    在链接器区域:

     target_link_libraries(${PROJECT_NAME} PUBLIC PkgConfig::LIBAV)
    

0
投票

仅供参考:有一些非官方的 cmake 支持,例如:

https://github.com/snikulov/cmake-modules/blob/master/FindFFmpeg.cmake

但至少在 cmake 3.27 中仍然没有官方支持。

© www.soinside.com 2019 - 2024. All rights reserved.