如何使这个Makefile更通用?

时间:2016-05-17 14:11:02

标签: c++ makefile

我通过完成许多小程序来刷新C ++,每个程序都包含在一个cpp文件中。我还想学习更多关于Makefiles的内容,并决定编写一个Makefile来编译我的所有小程序并为每个程序生成一个可执行文件。使用我当前的Makefile,我必须:

  1. 将名称附加到" BINARIES"

  2. 的末尾
  3. 复制重复的目标并将目标名称替换为二进制名称

  4. 如何编辑这个Makefile更加通用,这样我就可以简单地将我的新程序的名称附加到" BINARIES"而不必继续复制和粘贴重复的目标?

    data.sort(function(a, b) {
      a = a.x2;
      b = b.x2;
      return a < b ? -1 : a > b ? 1 : 0;
    });
    

2 个答案:

答案 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