【发布时间】:2012-01-23 08:48:55
【问题描述】:
我有一个 c++ 项目,其中包含各种源文件扩展名(.cpp、.c、.cc)和各种头文件扩展名(.hpp、.h、.hh)。源文件位于名为 SRC 的目录中,而头文件可预见地位于名为 INC 的目录中。
我想用这样的规则编译源代码
vpath %.c $(SRC)
%.o: %.c
$(COMPILER) $(FLAGS) $< $(INCFLAG)$(INC)
如果我知道源文件的格式为 %.c,这当然可行,但在多个可能的文件扩展名的情况下,我还需要为 %.cpp 和 %.cc 构建类似的规则.当然,编写三个规则并不是什么大不了的事,但是如果能够将此 makefile 用作任何项目的拖放功能,即使是使用不同的语言,也无需重新编写规则,那就太好了。
那么我该如何编写一个规则(或实现相同目标的其他构造),其工作方式如下:
SRC_EXT = cpp c cc
vpath %.$(SRC_EXT) $(SRC)
%.o: %.$(SRC_EXT)
$(COMPILER) $(FLAGS) $< $(INCFLAG)$(INC)
感谢您的帮助。
【问题讨论】:
标签: makefile rules file-extension