我通过完成许多小程序来复习 C++,每个小程序都包含在一个 cpp 文件中。我还想更多地了解 Makefile,并决定编写一个 Makefile 来编译我所有的小程序并为每个程序生成一个可执行文件。使用我当前的 Makefile,我必须:
将名称附加到“BINARIES”的末尾
复制重复的目标并将目标名称替换为二进制名称
我怎样才能编辑这个 Makefile 使其更加通用,这样我就可以简单地将我的新程序的名称附加到“BINARIES”的末尾,而不必继续复制和粘贴重复的目标?
BIN=./bin/
SOURCE=./src/
CXX=g++
CXXFLAGS=-g -c -Wall
BINARIES=sums-in-loop sum-in-loop sum-of-two
RM=rm -f
all: sums-in-loop sum-in-loop sum-of-two
sums-in-loop:
$(CXX) $(CXXFLAGS) $(SOURCE)$@.cpp -o $(BIN)$@
sum-in-loop:
$(CXX) $(CXXFLAGS) $(SOURCE)$@.cpp -o $(BIN)$@
sum-of-two:
$(CXX) $(CXXFLAGS) $(SOURCE)$@.cpp -o $(BIN)$@
clean:
$(RM) $(BIN)*
最佳答案
通常的方法是使用模式规则:
BIN=bin
SOURCE=src
CXX=g++
CXXFLAGS=-g -Wall
BINARIES=sums-in-loop sum-in-loop sum-of-two
RM=rm -f
all: $(addprefix $(BIN)/,$(BINARIES))
$(BIN)/%: $(SOURCE)/%.cpp
$(CXX) $(CXXFLAGS) $< -o $@
clean:
$(RM) $(BIN)/*
关于c++ - 我怎样才能使这个 Makefile 更通用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278593/