目前Multiwfn源代码包只提供了适配ifort的Makefile,且编译器选项、数学库路径、Debug/Release等配置全部硬编码在同一个文件中。如果喜欢自己折腾、用gfortran去编译Multiwfn,则需要手动大改Makefile。于是乎,我尝试性地以Makefile里面的编译选项为蓝本,自己搞了一个极其简单的构建系统,旨在实现在使用gfortran时只需要一条 make -j 就能完成编译,不必再操心编译器等差异。
P.S. 目前一个已知的不算问题的问题:
我在用gfortran+MKL利用上面的Makefile编译出来的Multiwfn载入孤立体系结构文件(gjf、ORCA的inp,等),完成所有操作后退出时会提示:
Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG
解决方案:直接无视即可。这是因为源代码对载入的结构文件试图判断周期性边界、并尝试执行 getcellabc(获取晶胞参数),发现这是孤立体系没有晶胞参数后失败跳过而产生的提示信息。