我通过完成许多小程序来刷新C ++,每个程序都包含在一个cpp文件中。我还想学习更多关于Makefiles的内容,并决定编写一个Makefile来编译我的所有小程序并为每个程序生成一个可执行文件。使用我当前的Makefile,我必须:
将名称附加到" BINARIES"
复制重复的目标并将目标名称替换为二进制名称
如何编辑这个Makefile更加通用,这样我就可以简单地将我的新程序的名称附加到" BINARIES"而不必继续复制和粘贴重复的目标?
data.sort(function(a, b) {
a = a.x2;
b = b.x2;
return a < b ? -1 : a > b ? 1 : 0;
});
答案 0 :(得分:3)
通常的方法是使用模式规则:
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)/*
答案 1 :(得分:0)
使用Makefile中的循环,您可以执行以下操作:
$(foreach bin,$(BINARIES),$(CXX) $(CXXFLAGS) $(SOURCE)$(dir).cpp -o $(BIN)$dir;)
您可以找到一些信息 - &gt; http://www.gnu.org/software/make/manual/make.html#Foreach-Function