MXEライブラリを用いたプログラムのコンパイルには、以下のようなMakefileを作成して下さい。
Makefileに以下の内容を加えます。
test.F90をコンパイルする場合のMakefileは以下のようになります。1)
### Target objects ### targets := test ### Phony targets ### all: $(targets) clean: rm *.o core $(targets) *~ *.ctl 2> /dev/null ### Platform dependent settings ### include ../../setting/macros.make ### MXE library ### LIB_DIR := ../../lib include ../../lib/libmxe.make ### Compile ### %.o: %.F90 $(LIBMXE) $(F90) -c $(FFLAGS) $(INCLUDES) -o $@ $< ### Link ### %: %.o $(F90) $^ $(LDFLAGS) -o $@
簡単に説明すると、まずコンパイル時にライブラリ$(LIBMXE)(=libmxe.a)が作成されているかどうかを$(LIB_DIR)(=lib/)でチェックして(libmxe.make内のvpath)、なければ$(LIB_DIR)でmakeを実行します。 ただし、プログラムのコンパイルと結合のコマンドでは、$(LIBMXE)を結合の対象には加えず、$(INCLUDES)と$(LDFLAGS)でライブラリとして参照します。 詳細はlib/libmxe.makeの中身を見て下さい。
ライブラリ自体のコンパイルはlib/Makefileで行います。モジュール間の依存関係を満たすように順番にコンパイルしています(objs_libmxeの順番に注意)。