FindSDL_sound¶
查找 SDL_sound 库,这是一个用于 SDL (Simple DirectMedia Layer) 应用程序的抽象声文件解码器。
注意
此模块专门用于 SDL_sound 版本 1。从版本 2.0.2 开始,SDL_sound 在使用 CMake 构建时会提供一个 CMake 包配置文件,并且应该使用 find_package(SDL2_sound)
进行查找。这些较新版本提供了 导入的目标 来封装使用需求。有关更多信息,请参阅上游 SDL_sound 文档。
注意
此模块依赖于找到 SDL,并且必须在 find_package(SDL)
之后调用。
根据 SDL_sound 库的构建方式,它可能需要其他依赖库才能使此模块成功。这些依赖项可能包括 MikMod、ModPlug、Ogg、Vorbis、SMPEG、FLAC 和 Speex。
结果变量¶
此模块定义了以下变量
SDL_SOUND_FOUND
一个布尔值,指示是否找到(请求版本)的 SDL_sound 库。为向后兼容,
SDL_SOUND_FOUND
变量也设置为相同的值。SDL_SOUND_VERSION_STRING
包含找到的 SDL_sound 版本的可读字符串。
SDL_SOUND_LIBRARIES
链接 SDL_sound 库所需的库。
缓存变量¶
以下缓存变量也可以设置
SDL_SOUND_INCLUDE_DIR
包含
SDL_sound.h
和使用 SDL_sound 库所需的其他头文件的目录。SDL_SOUND_LIBRARY
仅链接 SDL_sound 库的名称。请使用
SDL_SOUND_LIBRARIES
进行链接说明,而不是这个。MIKMOD_LIBRARY
依赖的 MikMod 库的路径。
MODPLUG_LIBRARY
依赖的 ModPlug 库(libmodplug)的路径。
OGG_LIBRARY
依赖的 Ogg 库的路径。
VORBIS_LIBRARY
依赖的 Vorbis 库的路径。
SMPEG_LIBRARY
依赖的 SMPEG 库的路径。
FLAC_LIBRARY
依赖的 FLAC 库的路径。
SPEEX_LIBRARY
依赖的 Speex 库的路径。
提示¶
此模块接受以下变量
SDLDIR
可设置的环境变量,用于帮助定位安装在自定义位置的 SDL 库。它应该指向配置、构建和安装 SDL 库时使用的安装目标:
./configure --prefix=$SDLDIR
。在 macOS 上,设置此变量会优先选择 Framework 版本(如果找到)而不是其他版本。在这种情况下,需要手动更改
SDL_LIBRARY
的缓存值来覆盖此选择,或者设置CMAKE_INCLUDE_PATH
变量来修改搜索路径。SDLSOUNDDIR
与
SDLDIR
功能相同的环境变量。SDL_SOUND_EXTRAS
这是一个可选的缓存变量,可用于添加附加标志,这些标志会添加到
SDL_SOUND_LIBRARIES
结果变量的前面。这主要用于该模块未能预料到的情况,需要添加附加标志。
示例¶
查找 SDL_sound 库并为链接到项目目标创建导入的接口目标
find_package(SDL)
find_package(SDL_sound)
if(SDL_sound_FOUND AND NOT TARGET SDL::SDL_sound)
add_library(SDL::SDL_sound INTERFACE IMPORTED)
set_target_properties(
SDL::SDL_sound
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${SDL_SOUND_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${SDL_SOUND_LIBRARIES}"
)
# Append the SDL dependency as imported target to be transitively linked:
set_property(
TARGET SDL::SDL_sound
APPEND
PROPERTY INTERFACE_LINK_LIBRARIES SDL::SDL
)
endif()
target_link_libraries(project_target PRIVATE SDL::SDL_sound)
在使用 SDL_sound 版本 2 时,上游包直接提供了 SDL2_sound::SDL2_sound
导入目标。它可以在项目中使用,而无需使用此模块。
find_package(SDL2_sound)
target_link_libraries(project_target PRIVATE SDL2_sound::SDL2_sound)
另请参阅¶
用于查找主 SDL 库的
FindSDL
模块。