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

Makefile 有没有一种规范的方法来获取Make规则中的前n个依赖项?,makefile,gnu-make,Makefile,Gnu Make,解决了如何通过数字分别获取每个依赖项 但是,如果我在一个规则中有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.

解决了如何通过数字分别获取每个依赖项

但是,如果我在一个规则中有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-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
  • >P>你应该考虑在你的食谱中使用自动变量:

    OutBin: In1.cc In2.cc In3.cc In4.cc In5.cc libA.a libB.a
        gcc $^ -o $@
    
    它同样更通用,更不容易出错,并且允许对多个目标使用相同的规则

    那么:

    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
  • >P>你应该考虑在你的食谱中使用自动变量:

    OutBin: In1.cc In2.cc In3.cc In4.cc In5.cc libA.a libB.a
        gcc $^ -o $@
    
    它同样更通用,更不容易出错,并且允许对多个目标使用相同的规则


    是的,问题语法有错误。对不起,我有点马虎。如果愿意,请编辑答案以匹配更正的问题。我试着编辑,我意识到你的文本也提到了这个问题,所以我回滚了我的编辑。是的,问题语法中有一个错误。对不起,我有点马虎。如果愿意,请编辑答案以匹配更正的问题。我试着编辑,我意识到你的文本也提到了这个问题,所以我回滚了我的编辑。