FindSWIG

查找已安装的 Simplified Wrapper and Interface Generator (SWIG) 可执行文件并确定其版本

find_package(SWIG [<version>] [COMPONENTS <langs>...] [...])

版本 3.19 中新增: 支持在调用 find_package() 命令时指定版本范围。当请求版本时,它可以像以前一样指定为单个值,现在也可以使用版本范围。有关版本范围用法和功能的详细描述,请参阅 find_package() 命令。

组件

在 3.18 版本中新增。

此模块支持可选组件来指定目标语言。

如果将 COMPONENTSOPTIONAL_COMPONENTS 参数传递给 find_package() 命令,它还将确定支持的目标语言。

find_package(SWIG [COMPONENTS <langs>...] [OPTIONAL_COMPONENTS <langs>...])

传递给 find_package() 的任何 COMPONENTS 都应该是传递给 swig_add_library()LANGUAGE 参数所提供的支持的目标语言的名称,例如 pythonperl5。语言名称必须是小写。

结果变量

此模块定义了以下变量

SWIG_FOUND

一个布尔值,指示是否在系统上找到 (请求版本的) SWIG 和任何必需的组件。

SWIG_VERSION

SWIG 可执行文件的版本 (由 swig -version 命令的结果)。

SWIG_<lang>_FOUND

如果请求了 COMPONENTSOPTIONAL_COMPONENTS,则每个可用的目标语言 <lang> (小写) 都将设置为 TRUE。

SWIG_DIR

已安装 SWIG Lib 目录的路径 (由 swig -swiglib 命令的结果)。

缓存变量

以下缓存变量也可以设置

SWIG_EXECUTABLE

SWIG 可执行文件的路径。

此可执行文件用于检索本模块的所有信息。它也可以手动设置,以从命令行更改要查找的版本。

示例

示例用法:需要 SWIG 4.0 或更高版本以及 Python 语言支持,并选择支持 Fortran 支持

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()

此模块通常与 UseSWIG 模块结合使用

find_package(SWIG COMPONENTS python)
if(SWIG_FOUND)
  include(UseSWIG)

  swig_add_library(mymod LANGUAGE python SOURCES mymod.i)
endif()

另请参阅

  • UseSWIG 模块用于在 CMake 中使用 SWIG。