如何设置CMake寻找本地包FFmpeg?
How set CMake to find a local package FFmpeg?
我正在尝试使用 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 项目中)。
安装pkg-config,nasm:
须藤apt-get安装-y pkg-config
sudo apt-get 安装 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)
我正在尝试使用 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 项目中)。
安装pkg-config,nasm:
须藤apt-get安装-y pkg-config
sudo apt-get 安装 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)