有没有一种规范的方法来获取 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
备注:
- 在先决条件中指定库(
libA.a libB.a
)但不在配方中使用它们是没有用的。不就是gcc $^ -o OutBin
,而是 吗?
您应该考虑在您的食谱中使用自动变量:
OutBin: In1.cc In2.cc In3.cc In4.cc In5.cc libA.a libB.a
gcc $^ -o $@
它更通用,更不容易出错,并且允许对多个目标使用相同的规则。
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
备注:
- 在先决条件中指定库(
libA.a libB.a
)但不在配方中使用它们是没有用的。不就是gcc $^ -o OutBin
,而是 吗?
您应该考虑在您的食谱中使用自动变量:
OutBin: In1.cc In2.cc In3.cc In4.cc In5.cc libA.a libB.a gcc $^ -o $@
它更通用,更不容易出错,并且允许对多个目标使用相同的规则。