我有一个C++项目,其中源文件扩展名为.cpp、.c、.cc,头文件扩展名为.hpp、.h、.hh。源文件位于名为SRC的目录中,而头文件则可预测地位于名为INC的目录中。
我想要编译源文件,并希望使用类似以下规则的方式:
当然,如果我知道源文件的格式将为%.c,则此方法有效,但在可能存在多个文件扩展名的情况下,我还需要构建类似于%.cpp和%.cc的规则。当然,编写三个规则并不是什么大问题,但能够将此makefile用作任何项目的拖放功能,甚至在不同语言中使用,而无需重写规则,这将是很好的。那么,我该如何编写一个规则(或其他实现相同目标的结构),以实现以下功能:
感谢您的帮助。
我想要编译源文件,并希望使用类似以下规则的方式:
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)
感谢您的帮助。
EXT
是什么意思,有人能解释一下吗?编辑:算了,看起来它是for
循环中的i
。 - ihsoy ih