CheckFortranFunctionExists

此模块提供了一个命令,用于检查 Fortran 函数是否存在。

在 CMake 项目中加载此模块,使用

include(CheckFortranFunctionExists)

命令

此模块提供以下命令

check_fortran_function_exists

检查 Fortran 函数是否存在(仅一次)

check_fortran_function_exists(<function> <variable>)
<function>

Fortran 函数的名称。

<variable>

用于存储检查结果的变量名称。此变量将作为内部缓存变量创建。

注意

此命令无法检测 Fortran 模块提供的函数。通常,建议使用 CheckSourceCompiles 来确定 Fortran 函数或子例程是否可用。

影响检查的变量

在调用此命令之前,可以设置以下变量来修改检查的运行方式

CMAKE_REQUIRED_LINK_OPTIONS

3.14 版新增。

要添加到链接命令的选项的分号分隔列表(有关详细信息,请参见try_compile())。

CMAKE_REQUIRED_LIBRARIES

要添加到链接命令的库的分号分隔列表。这些可以是系统库的名称,也可以是导入目标(有关详细信息,请参见try_compile())。

CMAKE_REQUIRED_LINK_DIRECTORIES

在版本 3.31 中添加。

要传递给链接器的库搜索路径的分号分隔列表(有关详细信息,请参见try_compile())。

示例

示例:带链接库的独立检查

在以下示例中,此模块与CMakePushCheckState模块结合使用,以临时修改所需的链接库(通过CMAKE_REQUIRED_LIBRARIES)并验证 Fortran 函数dgesv是否可用于链接。结果存储在内部缓存变量PROJECT_HAVE_DGESV中。

include(CheckFortranFunctionExists)
include(CMakePushCheckState)

find_package(LAPACK)

if(TARGET LAPACK::LAPACK)
  cmake_push_check_state(RESET)

  set(CMAKE_REQUIRED_LIBRARIES LAPACK::LAPACK)
  check_fortran_function_exists(dgesv PROJECT_HAVE_DGESV)

  cmake_pop_check_state()
endif()

另请参阅