Files
CMake/Modules/FindAVIFile.cmake
Peter Kokot d938e10e6e FindAVIFile: Sync documentation
- Added intro code block showing how to use this module.
- Extended example section.
- Synced variable descriptions.
- Additionally, moved the AVIFILE_AVIPLAY_LIBRARY required variable to
  the beginning in find_package_handle_standard_args() to have more
  informational and synced log output.
2025-08-04 00:20:40 +02:00

83 lines
2.3 KiB
CMake

# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindAVIFile
-----------
Finds `AVIFile <https://avifile.sourceforge.net/>`_ library and include paths:
.. code-block:: cmake
find_package(AVIFile [...])
AVIFile is a set of libraries for i386 machines to use various AVI codecs.
Support is limited beyond Linux. Windows provides native AVI support, and so
doesn't need this library.
Result Variables
^^^^^^^^^^^^^^^^
This module defines the following variables:
``AVIFile_FOUND``
Boolean indicating whether AVIFile is found. For backward compatibility,
the ``AVIFILE_FOUND`` variable is also set to the same value.
``AVIFILE_LIBRARIES``
The libraries to link against.
``AVIFILE_DEFINITIONS``
Definitions to use when compiling.
Cache Variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``AVIFILE_INCLUDE_DIR``
Directory containing ``avifile.h`` and other AVIFile headers.
Examples
^^^^^^^^
Finding AVIFile and conditionally creating an interface :ref:`Imported Target
<Imported Targets>` that encapsulates its usage requirements for linking to a
project target:
.. code-block:: cmake
find_package(AVIFile)
if(AVIFile_FOUND AND NOT TARGET AVIFile::AVIFile)
add_library(AVIFile::AVIFile INTERFACE IMPORTED)
set_target_properties(
AVIFile::AVIFile
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${AVIFILE_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${AVIFILE_LIBRARIES}"
INTERFACE_COMPILE_DEFINITIONS "${AVIFILE_DEFINITIONS}"
)
endif()
target_link_libraries(example PRIVATE AVIFile::AVIFile)
#]=======================================================================]
if (UNIX)
find_path(AVIFILE_INCLUDE_DIR avifile.h PATH_SUFFIXES avifile/include include/avifile include/avifile-0.7)
find_library(AVIFILE_AVIPLAY_LIBRARY aviplay aviplay-0.7 PATH_SUFFIXES avifile/lib)
endif ()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
AVIFile
REQUIRED_VARS AVIFILE_AVIPLAY_LIBRARY AVIFILE_INCLUDE_DIR
)
if (AVIFile_FOUND)
set(AVIFILE_LIBRARIES ${AVIFILE_AVIPLAY_LIBRARY})
set(AVIFILE_DEFINITIONS "")
endif()
mark_as_advanced(AVIFILE_INCLUDE_DIR AVIFILE_AVIPLAY_LIBRARY)