はじめに
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 \
...