2017-02-20 90 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