代码之家  ›  专栏  ›  技术社区  ›  skeept

如何使gnumake表现得像传递了命令行中的默认选项一样?

  •  0
  • skeept  · 技术社区  · 14 年前

    我使用的是makefile,其中如果我在命令行中传递选项

    make OPT1=opt1 OPT1=2
    

    我的行为与编辑makefile并在其中写入不同

    OPT1=opt1
    OPT2=opt2
    

    然后跑

    make
    

    在命令行上。

    我想要的行为是我在命令行中使用选项的行为。现在我正在使用别名,但是我想知道这是否完全可以只用makefile来完成。

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  1
  •   pythonic metaphor    14 年前

    你的文件使用 origin 命令这些变量决定是否覆盖它们?这将返回变量的原点,例如“environment”或“command line”,并且makefile可能是为了在这些情况下执行不同的操作而编写的。

        2
  •  1
  •   skeept    14 年前

    我最终解决这个问题的方法是:

    mv Makefile Makefile.aux
    

    然后用内容创建一个现在的makefile

    OPT1=true
    OPT2=false
    
    DEFAULT_OPTS=--no-print-directory OPT1=$(OPT1) OPT2=$(OPT2)
    
    .PHONY : $(MAKECMDGOALS)
    $(MAKECMDGOALS):
            $(MAKE) -f Makefile.aux $(DEFAULT_OPTS) $(MAKEFLAGS) $(MAKECMDGOALS)
    
    .PHONY: all
    all:
            $(MAKE) -f Makefile.aux $(DEFAULT_OPTS) $(MAKEFLAGS) $(MAKECMDGOALS)
    

    我之所以使用--no print目录是因为如果不使用此选项而使用此方法,它将在begining和编译结束时打印额外的消息。