有没有一种规范的方法来获取 Make 规则中的前 n 个依赖项?

Is there a canonical way to get the first n dependencies in a Make rule?

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

怎么样:

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. 吗?
  3. 您应该考虑在您的食谱中使用自动变量:

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

    它更通用,更不容易出错,并且允许对多个目标使用相同的规则。