ifortからgfortranへの移行〜Can't Open included file編~

手短に

上記のようなフォルダ構成のプロジェクトのコンパイル root> ifort -o hoge test00/*.f90 test01/src/*.f90 だとコンパイルが通るが、 root> gfortran -o hoge test00/*.f90 test01/src/*.f90 これだと通らない。

きったないMakefileを書いて解決

環境

OS:ubuntu 18.04LTS コンパイラ:gcc 7.4.0

解決方法

件のMakefileはこちら。(Makeはずぶの素人なのでユルシテ…)

hoge: test00.o test01.o
    gfortran -o hoge test00.o test01.o -g
test00.o: test00/test00.f90 head00
    gfortran -c test00/test00.f90 -o test00.o -g
test01.o: test01/src/test01.f90 head00 test01/head01
    gfortran -c test01/src/test01.f90 -I./test01/ -I./ -o test01.o -g

原因

ifortだと依存関係は明らかにしなくても羅列するだけでよしなにやってくれているらしい 一方で、gfortranだと依存関係を1つ1つ書かないといけないらしい

ちなみに

twitterでわからんって言ってたら、つよつよFortranエンジニアの方から反応をいただきました。 近々Fotran+CMakeで幸せになる記事を書かれるそうです。(ありがてぇ(五体投地))