私は、cとfortranコードが混在する静的ライブラリを構築しようとしています。 Fortranファイルをビルドするとき、私はFortranファイルごとにこのエラーを受け取りますが、cファイルは受け取りません。循環依存関係がなくなりました:make、fortran、cビルディングスタティックライブラリ
make: Circular file0.F90 <- file0.F90.o dependency dropped.
mpif90 -c -O2 -o "file0.F90.o" "file0.F90"
私が使用しているMakefileは以下のとおりです。私のF90ファイルのルールはcファイルのルールと同じなので、なぜこの動作が必要なのか分かりません。
CC = mpicc
FC = mpif90
TARGET=libpxn
FCFLAGS = -O2 -fPIC
CFLAGS = -O2 -fPIC -lm -Wall
CPPFLAGS = $(CFLAGS)
SRCS = $(wildcard *.F90) $(wildcard *.c)
OBJS = $(patsubst %, %.o, $(SRCS))
# Rules
all: static
static: $(OBJS)
ar rcs $(TARGET).a $(OBJS)
%.c.o: %.c
$(CC) -c $(CFLAGS) -o "[email protected]" "$<"
%.F90.o: %.F90
$(FC) -c $(FCFLAGS) -o "[email protected]" "$<"
clean:
@printf "Cleaning: \n"
@find . -type f -name '*.o' -print0 | xargs -0 -I % sh -c 'printf "% "; rm -f %'
rm -f $(TARGET).so $(TARGET).a
同じ結果を得たgnuコンパイラも試しました。これがなぜ起こっているのか?
これは鮮明に解決しました。ありがとうございます。 – timdykes
興味深いことに、これには「迅速かつ汚れた」解決策はありませんか? – timdykes
@timofiend私はあなたが決して尋ねないと思った:私は今はできませんが、私は約8時間ほどでアップデートを投稿します。ほとんどの場合、現在の設定でいくつかの癖を修正するだけです。 – user657267