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,可按以下步骤操作:
- 将libxmp源码克隆到项目的
vendor/libxmp目录 - 在主CMakeLists.txt中,添加SDL_mixer之前先引入libxmp:
add_subdirectory(vendor/libxmp) - 也可以修改
vendor/SDL_mixer/cmake/Findlibxmp.cmake,手动指定libxmp的头文件和库路径,但这种方式不如直接添加subdirectory便捷。
内容的提问来源于stack exchange,提问作者HUSTRIK
相关产品推荐
相关产品推荐

