2014-03-06 59 views
0

我需要什么,如果我想编译几个文件做的源文件(例如a.f90b.f90c.f90)(比方说,MYDIR)?的Makefile:在给定的目录中的特定目录

我的Makefile文件的代码是一样的东西:

CC=gfortran 
CFLAG=-g 
HOME=MYDIR 
SRC=$(HOME)/(a.f90,b.f90,c.f90) 
OBJ=$(SRC:,=.o) 
EXE=test.x 
%.o: %.f90 
     $(CC) $(CFLAG) -c -o [email protected] $< 
$(EXE): $(OBJ) 
     $(CC) -o [email protected] $^ $(CFLAG) 
clean: 
     rm -f *.o 

我想,4个线是不正确的。那么可以取代什么呢?

另一个想法:我可以使用通配符如果我想编译内MYDIR所有.F90文件?

回答

0

有很多方法可以做到这一点。你可以这样做:

SRC = $(addprefix $(HOME)/,a.f90 b.f90 c.f90) 

你的OBJ任务也是错误的;冒号后不需要逗号。

是的,你可以,如果你想使用通配符。

+0

非常感谢。其实我想使用'wildcard'函数。但是,如果我使用'addprefix',那么我可以在我的Makefile代码中写'$(addprefix $(HOME)/,* .f90)'。 关于分配OBJ,我遇到*如果我没有在冒号后面使用空格或逗号,则没有规则来发出目标*错误消息。 – hbaromega