【问题标题】:multiple makefiles in one directory一个目录中有多个makefile
【发布时间】:2012-08-16 23:24:13
【问题描述】:

我在我的目录中有一个生成文件,它构建带有某些环境变量集的脚本。如果我想在同一目录中创建另一个设置了不同环境变量的 makefile 怎么办?我应该如何命名这两个 make 文件? makefile.1makefile.2 有效吗?我怎么称呼他们?

【问题讨论】:

    标签: makefile


    【解决方案1】:

    您可以为 makefile.win 和 makefile.nix 等文件命名并使用它们:

    make -f makefile.win
    make -f makefile.nix
    

    或者有一个包含以下内容的 Makefile:

    win:
      make -f makefile.win
    
    nix:
      make -f makefile.nix
    

    并使用make winmake nix

    【讨论】:

    • 在后一种情况下,make 的默认行为是什么?
    • 默认情况下,它将使用名为 Makefile 的文件。如果您不指定目标,则默认目标是文件中第一个配方中的那个(当然可以取决于后面的)。
    【解决方案2】:

    你可以随意命名makefile。我通常将其命名为somename.mk。要稍后使用它,您需要告诉 make 您想要什么 makefile。为此使用-f 选项:

    make -f somename.mk
    

    【讨论】:

      【解决方案3】:

      实际上,您可以在同一个 make 文件中拥有两组环境变量。例如

      COMPILER = gcc
      CCFLAGS1 = -g
      CCFLAGS2 = -Wall
      
      a: main.c
              ${COMPILER} ${CCFLAGS1} main.c
      b: test.c
              ${COMPILER} ${CCFLAGS2} test.c
      

      那么你可以直接说make amake b。看你想要什么。

      还可以使用 -f 标志来调用您要调用的 makefile。

      【讨论】:

        【解决方案4】:

        您可以这样做,而不是为同一目的使用多个 makefile。您可以传递环境或为同一个 makefile 设置一个标志。例如:

        ifeq ($(ENV),ENV1) ENV_VAR = THIS else ENV_VAR = THAT endif default : test .PHONY : test test: @echo $(ENV_VAR)

        然后你可以简单地运行带有参数的 make 命令

        make ENV=ENV1

        【讨论】:

          【解决方案5】:

          我在同一个目录中有两个 makefile。许多食谱名称相同,这里有两种解决方案:

          1。 make 中的前缀

          proja_hello:
                     @echo "hello A"
          
          projb_hello:
                     @echo "hello N"
          

          2。保留两个单独的文件

          1. 项目 A 有 makefile。输入make hello
          2. 项目 B 有一个单独的 make 文件,名为 projb.mk。输入bmake hello
          3. 因为我已将alias bmake ='make -f projb.mk 添加到我的.bashrc 中,所以此方法有效。笔记!该命令可以在任何地方调用,但仅适用于 projb.mk 存在的地方。 笔记!您会失去使用别名的 make 自动完成功能,并且输入 make -f projb.mk hello 并不比输入 make projb_hello 好。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-11-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多