はじめに
OpenFOAM/foam-extendはwmakeという独自のビルドシステム(中身はただのbashファイル)を使っています。
wmakeにはOpt/Debug/Profという3種類のビルドが用意されているのですが、コンパイルフラッグを追加したり、各モードに既定のグローバルなコンパイルフラッグを変更したいときがあります。
今回は、研究室の同僚のプログラムをcallgrindを使ってプロファイリングするために、Profに既定されたグローバルなコンパイルフラッグ-pg -O2を変更する方法を見つけるのに苦労したので、忘れないようにメモとして残しておきます。
wmakeはOpenFOAM/foam-extendでしか使われておらず、ドキュメントも充実していないので、同じように苦労された方々が多いんじゃないでしょうか。
グローバルなコンパイルオプションの設定場所
OpenFOAM-#.#/foam-extend-#.#のディレクトリ直下にwmakeというディレクトリがあります。その中のrulesというディレクトリの下に、各プラットフォームおよびコンパイラごとの設定ファイルが置かれています。
今回はUbuntu-16.04LTS、gcc、Profモードのオプションを変更したかったので、wmake/rules/linux64Gcc/c++Profを変更しました。
c++DBUG = -pg
c++OPT = -O2
c++DBUG = -g
c++OPT = -O2
ライブラリ・アプリケーションごとのコンパイルオプションの設定
各ライブラリ・アプリケーションフォルダ直下のMakeディレクトリにあるoption/option.debugファイルのEXE_INCにコンパイルフラッグを追加することができます。Opt/Profモードではoptionファイルを、Debugモードではoption.debugファイルが使われます。
特定のライブラリ・アプリケーションのみ設定を一時的に変更したい場合に便利です。
EXE_INC = \
-I$(LIB_SRC)/meshTools/lnInclude \
...
LIB_LIBS = \
-lmeshTools \
...
EXE_INC = \
-Wall -Wpedantic \
-I$(LIB_SRC)/meshTools/lnInclude \
...
LIB_LIBS = \
-lmeshTools \
...