是否有规范的方法可以获取Make规则中的前n个依赖项?

时间:2018-07-24 00:18:46

标签: makefile gnu-make

This question介绍了如何通过数字分别获取每个依赖项。

但是,如果我在一条规则中有7个依赖项,而我想获得前5个,是否有规范的方法可以指定我想要前5个?

我主要是为了提高可读性。

OutBin: In1.cc In2.cc In3.cc In4.cc In5.cc libA.a libB.a
    gcc <MAGIC_STRING_FOR_FIRST_FIVE_DEPENDENCIES> -o OutBin

1 个答案:

答案 0 :(得分:2)

那又怎么样:

OutBin: In1.cc In2.cc In3.cc In4.cc In5.cc libA.a libB.a
    gcc $(wordlist 1,5,$^) -o OutBin

但是,如果您真正想要的是源文件,则以下内容可能会更好,因为它更通用,并且不依赖于依赖项的数量或顺序:

OutBin: In1.cc In2.cc In3.cc In4.cc In5.cc libA.a libB.a
    gcc $(filter %.cc,$^) -o OutBin

注意:

  1. 在先决条件中指定库(libA.a libB.a),但在配方中不使用它们是没有用的。难道不是简单地gcc $^ -o OutBin
  2. 您应该考虑在食谱中使用自动变量:

    OutBin: In1.cc In2.cc In3.cc In4.cc In5.cc libA.a libB.a
        gcc $^ -o $@
    

    它又是一种更通用,更不易出错的方法,并且允许对多个目标使用相同的规则。