2017-12-26 29 views
2

次のMakefileが作成されています。これは、 "test_Makefile_my_libs"という名前の実行可能ファイルを生成します。これは、私のFortranのコードネームは接尾辞 ".f90"になります。Makefileで私自身の実行ファイルの名前を付けるには?

FC = gfortran 

FCFLAGS = -g -fbounds-check 
FCFLAGS = -O2 

FCFLAGS += -I/usr/include 

LIBDIR = /homedir/myname/Libraries/ 
LIBS = $(LIBDIR)/libgfortran_f.a $(LIBDIR)/libmy.a 

PROGRAMS = test_Makefile_my_libs 

all: $(PROGRAMS) 

%: %.o 
     $(FC) $(FCFLAGS) -o [email protected] $^ $(LIBS) 

%.o: %.f90 
     $(FC) $(FCFLAGS) -c $< 

.PHONY: clean veryclean 

clean: 
     rm -f *.o *.mod *.MOD 

veryclean: clean 
     rm -f *~ $(PROGRAMS) 

しかし、ソースコード名とは関係なく、「myjob.exe」という実行可能ファイル名が必要です。ソースコード名を変更せずにMakefileに適切な変更を加える方法はありますか? (私はさまざまな方法を試してみましたが、どれも働いていない。)

+0

を私は強く** [GNU作る](HTTPSのドキュメントを読むために数時間を取ってお勧めしますwww.gnu.org/software/make/manual/html_node/index.html)*。これはあなたにとって(そして今日だけではなく)役に立つでしょう。また、 'make -p'を使って組み込み規則を理解し、それを活用してみてください。 –

+0

'PROGRAMS = test_Makefile_my_libs'を' PROGRAMS = myjob.exe'に変更するだけでいいですか? –

答えて

0

ルール追加://:

myjob.exe: test_Makefile_my_libs.o 
    $(FC) $(FCFLAGS) -o [email protected] $^ $(LIBS) 
+0

また、 'test_Makefile_my_libs'ではなく' PROGRAMS'にmyjob.exeを追加して、 'all'のターゲットにする必要があります –

+0

ありがとう!これは魔法のように機能します。私は以前同様のことを試しましたが、明らかにすべての細部を正しく理解できませんでした。 – qquito

+0

@SteveBarnes:OP *がデフォルトのターゲットにしたい場合は、そうすることができます。 – Beta

関連する問題