我正在尝试使用 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 可以指定路径。
但我不知道怎么办
以下内容对我来说在 Linux 上使用 cmake 效果很好。 您必须找到 Windows 的等效项。 我在 Windows 上使用 ffmpeg,但没有使用 cmake(即直接在 Visual Studio 项目中)。
sudo apt-get install -y pkg-config
sudo apt-get install nasm
下载ffmpeg源代码:
构建 ffmpeg 并安装它:
tar -xvf <downloaded_filename>
cd /root/folder/with/ffmpeg/src
./configure
make
sudo make install
将以下内容添加到您的 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)
仅供参考:有一些非官方的 cmake 支持,例如:
https://github.com/snikulov/cmake-modules/blob/master/FindFFmpeg.cmake
但至少在 cmake 3.27 中仍然没有官方支持。