Windows10+VS环境下CMake无法找到vcpkg安装的FFmpeg求助
解决CMake无法找到vcpkg安装的FFmpeg问题
1. 让CMake关联vcpkg工具链
vcpkg安装的库不会自动被CMake识别,必须让CMake使用vcpkg提供的工具链文件:
- Visual Studio配置方式:右键项目→CMake设置,在「CMake工具链文件」栏填入vcpkg的
vcpkg.cmake路径,示例:
替换成你实际的vcpkg安装路径。C:/vcpkg/scripts/buildsystems/vcpkg.cmake - CMakeLists.txt配置方式:在文件最顶部添加(同样替换路径):
set(CMAKE_TOOLCHAIN_FILE "C:/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
2. 修正find_package的包名
vcpkg提供的FFmpeg对应CMake模块是FindFFmpeg.cmake,所以find_package的名称要改成FFmpeg(首字母大写,其余小写),替换原CMakeLists.txt中的对应行:
find_package(FFmpeg REQUIRED)
3. 确认FFmpeg安装状态
打开命令行,进入vcpkg安装目录,执行命令检查是否正确安装(匹配你的项目平台,比如x64-windows):
vcpkg list ffmpeg
如果没有显示安装记录,重新安装:
vcpkg install ffmpeg:x64-windows
4. 链接FFmpeg库到项目
找到库后,需要将其链接到你的可执行文件,在CMakeLists.txt中添加:
target_link_libraries(CMakeProject1 PRIVATE FFmpeg::FFmpeg)
同时建议把SDL系列库也用这种方式链接,替换原有的设置:
target_link_libraries(CMakeProject1 PRIVATE SDL2::SDL2 SDL2_image::SDL2_image SDL2_ttf::SDL2_ttf SDL2_mixer::SDL2_mixer FFmpeg::FFmpeg )
完整修正后的CMakeLists.txt示例
set(CMAKE_TOOLCHAIN_FILE "C:/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file") cmake_minimum_required (VERSION 3.8) add_executable (CMakeProject1 "Source/Main.cpp" "Source/SDL2_Init.cpp" "Header/SDL2_Init.h") target_include_directories(CMakeProject1 PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/Header") find_package(SDL2 REQUIRED) find_package(SDL2_image REQUIRED) find_package(SDL2_ttf REQUIRED) find_package(SDL2_mixer REQUIRED) find_package(FFmpeg REQUIRED) target_link_libraries(CMakeProject1 PRIVATE SDL2::SDL2 SDL2_image::SDL2_image SDL2_ttf::SDL2_ttf SDL2_mixer::SDL2_mixer FFmpeg::FFmpeg ) if (CMAKE_VERSION VERSION_GREATER 3.12) set_property(TARGET CMakeProject1 PROPERTY CXX_STANDARD 20) endif()
排查要点
- 确保vcpkg工具链路径和安装路径无拼写错误
- 项目平台(x86/x64)要和FFmpeg的安装平台一致
- 不要手动复制
FindFFmpeg.cmake到FFmpeg文件夹,vcpkg已自动配置好模块路径
内容的提问来源于stack exchange,提问作者YoungCoder
相关产品推荐
相关产品推荐

