You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake编译报错:SDL_mixer无法找到libxmp库的解决咨询

解决SDL_mixer编译时找不到libxmp库的问题

错误信息

编译SnakeGameSDL时遇到CMake报错,SDL_mixer无法定位libxmp库:

CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find libxmp (missing: libxmp_LIBRARY libxmp_INCLUDE_PATH)
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  vendor/SDL_mixer/cmake/Findlibxmp.cmake:17 (find_package_handle_standard_args)
  vendor/SDL_mixer/CMakeLists.txt:616 (find_package)

项目CMakeLists.txt内容

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)

set(ProjectName SnakeGameSDL)

set(RootSources src/main.cpp src/Map.cpp src/Game.cpp)
set(RootHeaders src/Map.hpp src/Game.hpp)

add_executable(${ProjectName} ${RootSources} ${RootHeaders})

add_subdirectory(src/CSDLContext)
add_subdirectory(src/CAppSettings)
add_subdirectory(src/CollideSystem)
add_subdirectory(src/FontManager)
add_subdirectory(src/Food)
add_subdirectory(src/GameScenes)
add_subdirectory(src/GameScore)

add_subdirectory(src/Observer)
add_subdirectory(src/AchievementSystem)
add_subdirectory(src/Snake)

add_subdirectory(src/SoundManager)
add_subdirectory(src/SpriteAnimation)
add_subdirectory(src/TextureManager)
add_subdirectory(src/Timer)

#Vendor

add_subdirectory(vendor/SDL)
target_link_libraries(${ProjectName} SDL)

add_subdirectory(vendor/SDL_image)
target_link_libraries(${ProjectName} SDL_image)

add_subdirectory(vendor/SDL_ttf)
target_link_libraries(${ProjectName} SDL_ttf)

add_subdirectory(vendor/SDL_mixer)
target_link_libraries(${ProjectName} SDL_mixer)

解决方法

方法一:系统包管理器安装(最简便)

直接通过系统包管理器安装libxmp的开发包,SDL_mixer会自动识别系统中的库,无需修改现有CMake配置:

  • Debian/Ubuntu 系列:
    sudo apt-get install libxmp-dev
    
  • Fedora/RHEL 系列:
    sudo dnf install libxmp-devel
    

安装完成后,重新运行CMake编译命令即可。

方法二:手动添加libxmp到vendor目录(适合无法系统安装的场景)

如果必须使用源码编译的libxmp,可按以下步骤操作:

  1. 将libxmp源码克隆到项目的vendor/libxmp目录
  2. 在主CMakeLists.txt中,添加SDL_mixer之前先引入libxmp:
    add_subdirectory(vendor/libxmp)
    
  3. 也可以修改vendor/SDL_mixer/cmake/Findlibxmp.cmake,手动指定libxmp的头文件和库路径,但这种方式不如直接添加subdirectory便捷。

内容的提问来源于stack exchange,提问作者HUSTRIK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:45:43