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_FOUND

3.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 模块。