【问题标题】:Get invocation option(s) from within Makefile从 Makefile 中获取调用选项
【发布时间】:2016-12-02 10:34:33
【问题描述】:

我可以使用 -j 选项调用 (GNU) make,从而可以并行运行多个作业:

make -j

是否可以从 Makefile 中确定是否使用此选项调用了 make?我试图寻找一些自动变量来存储所有给定的选项,但我找不到它。

我问是因为我希望构建过程根据是否使用 -j 略有不同。

【问题讨论】:

    标签: makefile parallel-processing compilation gnu-make


    【解决方案1】:

    我不确定这是否是一种标准做法(或一个好的建议),但这里是:

    制作文件:

    something:
        @echo MAKEFLAGS : $(MAKEFLAGS)
    

    跑步:

    /home/user> make something
    MAKEFLAGS :
    
    /home/user> make -j  something
    MAKEFLAGS : -j
    
    /home/user> make -j 10  something
    MAKEFLAGS : -j10 --jobserver-auth=3,4
    
    /home/user> make -j20  something
    MAKEFLAGS : -j20 --jobserver-auth=3,4
    

    【讨论】:

    • 请注意,只有在 GNU make 4.2 及更高版本中,您才能看到列出的并行量;在以前的版本中,无论您指定什么,它都会说-j。但是对于这个问题就足够了。
    【解决方案2】:

    查看MAKEFLAGS GNU make 变量。

    echo 'all:;: $(MAKEFLAGS)' | make -f-
    : 
    
    echo 'all:;: $(MAKEFLAGS)' | make -f- -j
    :  -j
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多