首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试GNU make

调试GNU make
EN

Stack Overflow用户
提问于 2009-11-17 08:55:02
回答 6查看 90K关注 0票数 77

make中有没有一种命令行的方式来找出目标的哪些先决条件没有更新?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-11-17 09:02:53

代码语言:javascript
复制
make -d

应该会给你足够的信息来调试你的makefile。

注意:分析输出需要花费一些时间和精力,但将输出加载到您最喜欢的编辑器中并进行搜索将会有很大帮助。

如果指定您感兴趣的特定目标,则可以大大减少调试输出量。因此,如果您只对dodgy目标感兴趣,而不是只对make -d感兴趣,那么可以尝试:

代码语言:javascript
复制
make clean
make -d dodgy

(当然,假设您有一个clean目标)。

make --debugmake -d相同,但您也可以指定:

代码语言:javascript
复制
make --debug=FLAGS

其中,标志可以是:

用于所有调试的

  • a (对于basic debugging.
  • v,与
    • a相同;对于basic debugging.
    • v,与make --debug).
    • b相同;对于隐式rules.
    • j,basic debugging.
    • i用于隐式调用;对于makefile重新生成过程中的信息,与information.
    • m相同。

看起来make --debug=b是满足您需求的最佳选择,如以下文字记录所示:

代码语言:javascript
复制
pax@paxbox> cat makefile
c:a b
    touch c

pax@paxbox> touch a b ; make
touch c

pax@paxbox> make
make: 'c' is up to date.

pax@paxbox> touch a ; make --debug=b
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc. Blah, blah, blah.
Reading makefiles...
Updating goal targets....
 Prerequisite 'a' is newer than target 'c'.
Must remake target 'c'.
touch c
Successfully remade target file 'c'.
票数 109
EN

Stack Overflow用户

发布于 2009-11-17 09:03:44

你在找Make的“演练”吗?它将打印出make正在做什么,而不是实际这样做,让您看到发生了什么。

这个标志是-n,像make -n一样使用它。

票数 25
EN

Stack Overflow用户

发布于 2010-08-12 00:10:55

还有一个带有调试器和更好的跟踪/错误输出的GNU make:Remake

这两个虽然仍然相关,但都有点老了。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1745939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档