检查 FortranSourceRuns¶
在 3.14 版本加入.
检查给定的 Fortran 源代码是否编译并链接到可执行文件中并随后可以运行。
- check_fortran_source_runs¶
check_fortran_source_runs(<code> <resultVar> [SRC_EXT <extension>])
检查
<code>中提供的源代码是否可以编译为 Fortran 源文件,链接为可执行文件,然后运行。<code>必须是 Fortranprogram。check_fortran_source_runs("program test real :: x[*] call co_sum(x) end program" HAVE_COARRAY)
当编译器缺乏对必要功能的支持,或者特定供应商库与正在使用的 Fortran 编译器版本不兼容时,此命令可以帮助避免昂贵的构建过程。其中一些故障只发生在运行时而不是链接时,一个简单的运行时示例可以在主构建过程之前捕获问题。
如果
<code>可以成功构建和运行,则由<resultVar>指定的内部缓存变量将被设置为 1,否则它将被设置为一个计算结果为布尔值 false 的值(例如空字符串或错误消息)。默认情况下,测试源文件将被赋予一个
.F90文件扩展名。SRC_EXT选项可用于用.<extension>覆盖它。底层检查由
try_run()命令执行。在调用check_fortran_source_runs()之前设置以下任何变量可以影响编译和链接命令:CMAKE_REQUIRED_FLAGS要传递给编译器的附加标志。请注意
CMAKE_Fortran_FLAGS的内容及其关联的特定于配置的变量会自动添加到编译器命令中的CMAKE_REQUIRED_FLAGS内容之前。CMAKE_REQUIRED_DEFINITIONSA ;-list 形式为``-DFOO`` 或``-DFOO=bar`` 的编译器定义。由
<resultVar>指定的名称的定义也将自动添加。CMAKE_REQUIRED_INCLUDES传递给编译器的标头搜索路径的 ;-list。这些将是
try_run()使用的唯一标题搜索路径,即:prop_dir:INCLUDE_DIRECTORIES 目录属性的内容将被忽略。CMAKE_REQUIRED_LINK_OPTIONSCMAKE_REQUIRED_LIBRARIESA ;-list 要添加到链接命令的库。这些可以是系统库的名称,也可以是 Imported Targets <Imported Targets>`(有关详细信息,请参阅 :command:`try_run)。
CMAKE_REQUIRED_QUIET如果此变量的计算结果为布尔真值,则将抑制与检查相关的所有状态消息。
检查只执行一次,结果缓存在名为 <resultVar> 的变量中。每次后续 CMake 运行都将重新使用此缓存值,而不是再次执行检查,即使 <code> 更改也是如此。为了强制重新评估检查,必须从缓存中手动删除由
<resultVar>命名的变量。