# FindOpenAL

Finds the Open Audio Library (OpenAL).

OpenAL is a cross-platform 3D audio API designed for efficient rendering of multichannel three-dimensional positional audio. It is commonly used in games and multimedia applications to provide immersive and spatialized sound.

Projects using this module should include the OpenAL header file using `#include <al.h>`, and not `#include <AL/al.h>`. The reason for this is that the latter is not portable. For example, Windows/Creative Labs does not by default put OpenAL headers in `AL/` and macOS uses the convention of `<OpenAL/al.h>`.

## Imported Targets

This module provides the following Imported Targets:

`OpenAL::OpenAL`

  Added in version 3.25.

  Target encapsulating the OpenAL library usage requirements, available only if the OpenAL library is found.

## Result Variables

This module defines the following variables:

`OpenAL_FOUND`

  Boolean indicating whether the OpenAL is found. For backward compatibility, the `OPENAL_FOUND` variable is also set to the same value.

`OPENAL_VERSION_STRING`

  Human-readable string containing the version of OpenAL found.

## Cache Variables

The following cache variables may also be set:

`OPENAL_INCLUDE_DIR`

  The include directory containing headers needed to use the OpenAL library.

`OPENAL_LIBRARY`

  The path to the OpenAL library.

## Hints

This module accepts the following variables:

`OPENALDIR`

  Environment variable which can be used to set the installation prefix of OpenAL to be found in non-standard locations.

  OpenAL is searched in the following order:

  1. By default on macOS, system framework is searched first: `/System/Library/Frameworks`, whose priority can be changed by setting the `CMAKE_FIND_FRAMEWORK` variable.

  2. Environment variable `ENV{OPENALDIR}`.

  3. System paths.

  4. User-compiled framework: `~/Library/Frameworks`.

  5. Manually compiled framework: `/Library/Frameworks`.

  6. Add-on package: `/opt`.

## Examples

Finding the OpenAL library and linking it to a project target:

    find_package(OpenAL)
    target_link_libraries(project_target PRIVATE OpenAL::OpenAL)