可以说我有一个包含c文件(.
)的目录,并且我希望目标文件最终位于两个不同的目录中:debug和release。现在,我要为此制定规则。最终将是这样的:
$(DEBUGDIR)%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
$(RELEASEDIR)%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
这是两个完全相同的规则。由于这些规则之间的所有可能差异都包含在CFLAGS
其中,所以没有理由甚至要遵循两个规则:我只想维护一个。我尝试了这个:
$(DEBUGDIR)%.o $(RELEASEDIR)%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
但是现在,它不会为RELEASE
已经编译的o文件进行编译DEBUG
。如何将这两个规则合并为一个?
你做不到 具有多个目标的模式规则定义一种配方,该配方可以在一次运行时创建多个输出文件。
为此,我只需编写两次规则。或者,您可以将配方放入变量中并使用两次:
COMPILE = $(CC) $(CFLAGS) -c $< -o $@
$(DEBUGDIR)%.o : %.c
$(COMPILE)
$(RELEASEDIR)%.o : %.c
$(COMPILE)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句