さまざまな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に多くの明示的なルールがあり、それらをより単純な暗黙のルールに置き換えたいと思います。
それを行う方法はありますか?