FindSDL_sound¶
查找 SDL_sound 库,这是一个用于 SDL(Simple DirectMedia Layer)应用程序的抽象声文件解码器。
find_package(SDL_sound [<version>] [...])
注意
此模块专门用于 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_FOUND3.3 版本中新增。
一个布尔值,指示是否找到了(请求版本的)SDL_sound 库。
SDL_sound_VERSION版本 4.2 中添加。
包含找到的 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_FOUND自版本 4.2 起已弃用: 使用
SDL_sound_FOUND,其值相同。一个布尔值,指示是否找到了(请求版本的)SDL_sound 库。
SDL_SOUND_VERSION_STRING自版本 4.2 起已弃用: 使用
SDL_sound_VERSION,其值相同。包含找到的 SDL_sound 版本的人类可读字符串。
示例¶
查找 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模块。