我试图让 nmake - 版本6 以递归方式构建一个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 :(得分:0)
对于那些可能正致力于解决方案的人。我找到了实现我想要的方法。请参阅下面的解决方案:
OBJS=aes.o \
sha256.o \
pkcs5.o
$(OBJS):
@echo Compiling $(*B).c ...
$(CC) $(Includes) $(CFLAGS) $(SrcDir)\$(*B).c