fortran - 如何使用 autoconf 以可移植的方式查找 gfortran 版本号?

标签 fortran version gfortran portability autoconf

我正在尝试使用 autoconf 来检查用于编译我的代码的 gfortran 版本。如何以可移植的方式安全地获取版本号?

最简单的方法是简单地使用gfortran -dumpversion,但我读到这种方法存在一些问题(例如,在我的机器上,它不返回补丁级别编号)。我在文档中找到的选项 -dumpfullversion 似乎没有实现(我收到一个 fatal error )。

相反,我尝试使用 gfortran --versiongfortran -v。我的第一次尝试如下:

GFORTRAN_VERSION=`gfortran -v 2>&1 | $AWK 'END { print }' | $AWK '{ print $3 }'`

其中$AWK包含由AC_PROG_AWK找到的awk类型程序。它在我测试过的所有 Linux 机器上都能完美运行。但是,假设 gfortran -v 始终在其输出最后一行的第三个位置返回版本号似乎并不合理。例如,这种方法适用于 MacOS 还是 Windows?

非常欢迎任何建议,提前非常感谢!

最佳答案

您可以编写一个简短的程序来使用预处理器定义,如下所示

program p
  implicit none

  write(*,*) __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__
end program p

参见What are the gcc predefined macros for the compiler's version number?

如果您愿意,您可以自定义格式。

关于fortran - 如何使用 autoconf 以可移植的方式查找 gfortran 版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42176006/

相关文章:

ios - 如何提醒用户iOS应用程序的新更新

linux - 是否可以使用 gfortran 和 openmpi 在 Linux 中编译 NASA Parallel Benchmarks (NPB) 文件?

c++ - 从 Fortran 返回字符串到 C++

function - 函数输入进行求和运算的求和问题

python - python中的fortran子例程导入失败

fortran - gfortran 成员析构函数

fortran - 在 (1) 打开的文件 ‘mpi.mod’ 不是 GNU Fortran 模块文件

arrays - Fortran 二维数组保存

doctrine-orm - 如何在带有 Doctrine 的 Apigility 应用程序中同时使用多个版本?

jquery - 从 jQuery 1.4.4 切换到 1.6.1 时出现问题