# FindSWIG

Find the Simplified Wrapper and Interface Generator (SWIG) executable.

This module finds an installed SWIG and determines its version.

New in version 3.18: If a `COMPONENTS` or `OPTIONAL_COMPONENTS` argument is given to the `find_package()` command, it will also determine supported target languages.

New in version 3.19: When a version is requested, it can be specified as a simple value or as a range. For a detailed description of version range usage and capabilities, refer to the `find_package()` command.

The module defines the following variables:

`SWIG_FOUND`

  Whether SWIG and any required components were found on the system.

`SWIG_EXECUTABLE`

  Path to the SWIG executable.

`SWIG_DIR`

  Path to the installed SWIG `Lib` directory (result of `swig -swiglib`).

`SWIG_VERSION`

  SWIG executable version (result of `swig -version`).

`SWIG_<lang>_FOUND`

  If `COMPONENTS` or `OPTIONAL_COMPONENTS` are requested, each available target language `<lang>` (lowercase) will be set to TRUE.

Any `COMPONENTS` given to `find_package` should be the names of supported target languages as provided to the LANGUAGE argument of `swig_add_library`, such as `python` or `perl5`. Language names must be lowercase.

All information is collected from the `SWIG_EXECUTABLE`, so the version to be found can be changed from the command line by means of setting `SWIG_EXECUTABLE`.

Example usage requiring SWIG 4.0 or higher and Python language support, with optional Fortran support:

    find_package(SWIG 4.0 COMPONENTS python OPTIONAL_COMPONENTS fortran)
    if(SWIG_FOUND)
      message("SWIG found: ${SWIG_EXECUTABLE}")
      if(NOT SWIG_fortran_FOUND)
        message(WARNING "SWIG Fortran bindings cannot be generated")
      endif()
    endif()