2017-02-20 72 views
0

我試圖獲得nmake-version 6以遞歸方式構建c-project,從而緩解每個源文件及其關聯對象的痛苦單行規則。nmake v6遞歸構建c文件

見下面的例子:

目前這是我有工作的(片段)...

File1 = aes 
File2 = sha256  
File3 = pkcs5 

$(ObjDir)\$(File1).o : $(SrcDir)\$(File1).c 
    @echo Compiling ... $(File1) 
    @$(CC) -c $(Includes) $(CFLAGS) $(SrcDir)\$(File1).c 

$(ObjDir)\$(File2).o : $(SrcDir)\$(File2).c 
    @echo Compiling ... $(File2) 
    @$(CC) -c $(Includes) $(CFLAGS) $(SrcDir)\$(File2).c 

$(ObjDir)\$(File3).o : $(SrcDir)\$(File3).c 
    @echo Compiling ... $(File3) 
    @$(CC) -c $(Includes) $(CFLAGS) $(SrcDir)\$(File3).c 

不過,我更願意做這樣的事情(不工作,沒有錯誤拋出)...

$(ObjDir)\$(SrcDir:%|fF.c=%|fF.o): $(SrcDir)\%.c 
    @echo Compiling ... $(*B) 
    @$(CC) -c $(Includes) $(CFLAGS) $*.c 

命令參考使用:
[文件名宏]:https://msdn.microsoft.com/en-us/library/aa233975(v=vs.60).aspx
[文件名及零部件語法]:https://msdn.microsoft.com/en-us/library/aa233961(v=vs.60).aspx
[宏替換]:https://msdn.microsoft.com/en-us/library/bsd42ets.aspx

感謝提前的幫助。

回答

0

對於那些可能正在尋求解決方案的人。我已經想出了一種實現我想要的方式。請參閱下面的解決方案:

OBJS=aes.o \ 
    sha256.o \ 
    pkcs5.o 

$(OBJS): 
    @echo Compiling $(*B).c ... 
    $(CC) $(Includes) $(CFLAGS) $(SrcDir)\$(*B).c