【问题标题】:Parameter for rule in MakefileMakefile 中规则的参数
【发布时间】:2011-06-14 13:30:08
【问题描述】:

我需要制作一个 Makefile,它应该有一个 run 规则。但是,运行需要一些参数。

有谁知道在 Makefile 中运行规则时如何传递参数?我希望能够通过键入 make run foo bar 来运行带有参数的 run 规则。

我试过了,但没用:

run:
    make compile
    ./scripts/runTrips $1 $2 $PLACES $OUT $VERS

我要提供的参数是第一个和第二个。

【问题讨论】:

    标签: unix makefile


    【解决方案1】:

    将参数传递给 make 命令时,像引用其他内部 make 变量一样引用它们。

    如果你的 makefile 看起来像:

    run:
            script $(param1) $(param2)
    

    您可以使用以下语法调用它:

    $> make run param1=20 param2=30
    

    并且 make 应该像这样调用脚本:

    script 20 30
    

    【讨论】:

    • 它确实有效,但我可以在我写的时候让它运行: $> make run (而不是 param1= .... )
    • @amit gr:不,像make run <param1> 这样的东西是不可能的,因为make 想将其解释为目标名称。例如make all install:首先处理目标“all”,然后处理目标“install”。您想成为一种参数的所有内容都必须通过key=value 语法(或同名的环境变量)传递。
    【解决方案2】:

    Make 本身并不像脚本那样提供传递参数。通常 make 以下列方式使用:您配置项目而不是运行简单的“make”。可以通过运行 shell 脚本“configure”来完成配置。该脚本是您可以向其传递参数的脚本。例如:

    ./configure param1 param2
    make run
    

    配置脚本必须解析参数并将它们写出到config.mk。 config.mk 必须包含以下内容:

    PARAM1 = val1
    PARAM2 = val2
    

    您的 Makefile 必须包含 config.mk:

    TOP = .
    include $(TOP)/config.mk
    
    run:
        make compile
        ./scripts/runTrips $(PARAM1) $(PARAM2) $(PLACES) $(OUT) $(VERS)
    

    在您的“配置”脚本中,您还可以检查参数的正确性并进行其他检查和计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多