【发布时间】:2017-12-26 00:44:18
【问题描述】:
我创建了以下 Makefile,它可以工作。它生成一个名为“test_Makefile_my_libs”的可执行文件,它恰好是我的 Fortran 代码名称,没有后缀“.f90”。
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 $@ $^ $(LIBS)
%.o: %.f90
$(FC) $(FCFLAGS) -c $<
.PHONY: clean veryclean
clean:
rm -f *.o *.mod *.MOD
veryclean: clean
rm -f *~ $(PROGRAMS)
但我需要一个独立于我的源代码名称的可执行文件名,例如“myjob.exe”。在不修改我的源代码名称的情况下,我应该如何在 Makefile 中进行适当的更改? (我尝试了很多不同的方法,但都没有奏效。)
【问题讨论】:
-
我强烈建议您花几个小时阅读GNU make的文档。这将对您有用(不仅是今天)。另外,请尝试
make -p了解内置规则并利用它们。 -
把
PROGRAMS = test_Makefile_my_libs改成PROGRAMS = myjob.exe没用?? -
“我强烈建议您花几个小时来学习 RTFM”。这违背了网站 90% 内容的目的。此外,这个问题比看起来更深:使用显式规则很简单,但如果想使用隐式规则怎么办?