cmakeにおけるDWITH_MPIオプションのデフォルト設定は本来ONのはずだが、OFFになっている

マニュアルによると、cmakeにおけるDWITH_MPIオプションのデフォルト設定、 すなわちDWITH_MPIを指定しなかった場合の設定はONになるはず。

https://manual.frontistr.com/en/install/install_04.html#cmake-options

ところが現状ではOFFになってしまう。これはCMakeLists.txtで

if(WITH_MPI)
  find_package(MPI)

と

option(WITH_MPI "for parallel environment with MPI" ${MPI_FOUND})

の呼び出し順が、本来の順番と逆であるため。 これではWITH_MPIが外部から与えられない場合、変数WITH_MPIが未定義のままif判定に進むため、find_package(MPI)が実行されないので、optionを通ってもWITH_MPIがONにならない。

WITH_MPI=ONのときだけfind_package(MPI)をさせたいのなら、

option(WITH_MPI "for parallel environment with MPI" ON)
if(WITH_MPI)
  find_package(MPI)

が正しい。これならば、

  • DWITH_MPIを省略 ⇒WITH_MPIはON
  • DWITH_MPI=ON指定 ⇒WITH_MPIはON
  • DWITH_MPI=OFF指定 ⇒WITH_MPIはOFF

の挙動となる(はず)。