2014-03-06 62 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