Makefile 单独运行每个命令,但将其分发到多个Make文件中

Makefile 单独运行每个命令,但将其分发到多个Make文件中,makefile,Makefile,我希望每个Env都有自己的Makefile(本地、开发、生产) 因此,我为每个目录创建了3个目录和一个Makefile 然后创建一个公共MakeFile,其中包括所有其他子MakeFile,如下所示: 我能够在父文件中包含我的子命令,但问题是 如果我运行makelocal,它将执行Makefile.local中的所有命令 但我希望每个命令都必须单独运行 当提到类似于生成本地命令或甚至生成本地命令时,只能执行本地命令 您可能需要以下内容: TOP_LEVEL_TARGS := dev l

我希望每个Env都有自己的
Makefile
(本地、开发、生产)

  • 因此,我为每个目录创建了3个目录和一个
    Makefile

  • 然后创建一个公共
    MakeFile
    ,其中包括所有其他子
    MakeFile
    ,如下所示:
    • 我能够在父文件中包含我的子命令,但问题是
      • 如果我运行
        makelocal
        ,它将执行Makefile.local中的所有命令
      • 但我希望每个命令都必须单独运行
      • 当提到类似于
        生成本地命令
        或甚至
        生成本地命令
        时,只能执行
        本地命令

    您可能需要以下内容:

    TOP_LEVEL_TARGS := dev local prod
    
    $(TOP_LEVEL_TARGS):
        make -f config/local/Makefile.$@ $(filter-out $(TOP_LEVEL_TARGS), $(MAKECMDGOALS))
    

    这将使用原始make命令的所有命令目标(减去顶级目标)调用子make。

    您可能需要类似以下内容:

    TOP_LEVEL_TARGS := dev local prod
    
    $(TOP_LEVEL_TARGS):
        make -f config/local/Makefile.$@ $(filter-out $(TOP_LEVEL_TARGS), $(MAKECMDGOALS))
    

    这将使用原始make命令的所有命令目标(减去顶级目标)调用子make。

    请参阅@Jérôme它正在使用argumnet,我不认为它会运行子命令如果您使用GNU make,为什么不
    将您的makefile包含到主makefile中?请参阅@Jérôme它正在使用argumnet,我不认为它会运行child命令,如果您使用gnumake,为什么不将您的makefile包含到主makefile中呢?