【问题标题】:How to trace a recursive make?如何跟踪递归make?
【发布时间】:2010-02-22 04:07:06
【问题描述】:

我需要在一个使用自动制作工具并递归制作的系统上工作。

'make -n' 只跟踪顶层的 make。

有没有办法让make在遇到make命令时执行make -n?

【问题讨论】:

    标签: makefile trace recursion


    【解决方案1】:

    使用$(MAKE) 调用您的子makefile,而不是使用make。那应该行得通。查看手册中的How the MAKE variable works。这是一个简单的例子:

    生成文件:

    all:
        @$(MAKE) -f Makefile2
    

    Makefile2:

    all:
        @echo Makefile2
    

    命令行:

    $ make
    Makefile2
    $ make -n
    make -f Makefile2
    echo Makefile2
    $
    

    【讨论】:

      【解决方案2】:

      你的递归 makefile 看起来像这样吗:

      foo:
          make -C src1
          make -C src2
      

      或者像这样:

      foo:
          ${MAKE} -C src1
          ${MAKE} -C src2
      

      如果您希望将标志传递给子 make 进程,我认为您需要使用第二种样式。可能是你的问题。

      【讨论】:

        【解决方案3】:

        将环境变量“MAKEFLAGS”设置为“n”可能会满足您的需要。

        这里有一些更高级的跟踪 make 命令的技巧: http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make

        这些技巧中最简单的就是将 SHELL="sh -x" 添加到您的 make 命令(在这种情况下不使用“-n”运行)。

        【讨论】:

          猜你喜欢
          • 2016-04-13
          • 1970-01-01
          • 1970-01-01
          • 2022-01-23
          • 2010-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-10
          相关资源
          最近更新 更多