我有一个目录,我在其中不断添加不同的 C++ 源文件和通用 Makefile 来编译它们。这是 Makefile 的内容:
.PHONY: all clean
CXXFLAGS = -pipe -Wall -Wextra -Weffc++ -pedantic -ggdb
SRCS = $(wildcard *.cxx)
OBJS = $(patsubst %.cxx,%.out,$(SRCS))
all: $(OBJS)
clean:
rm -fv $(OBJS)
%.out: %.cxx
$(CXX) $(CXXFLAGS) $^ -o $@
注意:从上面很明显,我将 *.out 用于可执行文件扩展名(而不是用于目标文件)。
此外,还有一些文件是一起编译的:
g++ file_main.cxx file.cxx -o file_main.out
为了编译这样的文件,到目前为止我一直在 Makefile 中添加明确的规则:
file_main.out: file_main.cxx file.cxx
file.out: file_main.out
@echo "Skipping $@"
但是现在我的 Makefile 有很多显式规则,我想用更简单的隐式规则替换它们。
知道怎么做吗?