0

これが私がLinuxシステムで戦っているMakefileの短縮版です:

VPATH=altsrc:src:obj

OBJECTS=\
     nondepcode1.o \
     nondepcode2.o \
     nondepcode3.o \
     depcode1.o    \
     depcode2.o    \
     depcode3.o

DEP_OBJS= depcode1.o depcode2.o depcode3.o


# Targets

execute: $(OBJECTS)
gfortran -o $@ $^ $(LFLAGS)

$(DEP_OBJS): npts.h


obj/%.o: %.f
$(FORTRAN) $(FFLAGS) $< -o $@
obj/%.o: %.f90
$(FORTRAN) $(FFLAGS) $< -o $@


# Rules

.f.o:
$(FORTRAN) $(FFLAGS) -o obj/$@ $<

%.o: %.f90
$(FORTRAN) $(FFLAGS) -o obj/$@ $<

npts.hがどのオブジェクトよりも新しい場合、「npts.h」に依存する3つのオブジェクトがmake(またはgmake)の実行時に自動的に更新されることを期待していました。これは起こりません。Make(およびgmake)は、オブジェクトが最新であると見なします。AFAICT、GNUmakeマニュアルに記載されている方法で作業を行っています。make / gmakeが私が期待したことをしていない理由を誰かが知っていますか?ありがとう。ところで、実際のMakefileのすべてのレシピ行の先頭にタブがあります。彼らはここに去りました。

4

1 に答える 1

0

私の顔に大きな卵。私が言ったように、これはMakefileの短縮版でした。実際のMakefileにバグが見つかりました。いくつかの誤った名前のマクロがありました。このようなものの細かい点についてはあまり経験がありません。Meaculpa。本当にごめんなさい。確認していただきありがとうございます。

于 2012-07-17T17:06:35.177 に答える