我看到这是与
相同的问题Making cmake print commands before executing
但这个答案对我不起作用。我猜这个答案只适用于cmake。没有cmake的选项有哪些?
注意尝试了这些
make VERBOSE=1 target
make target VERBOSE=1
VERBOSE=1 make target
make V=1 target
make target V=1
V=1 make target
make -V target
make -v target
他们都没有工作。
make -v return
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu
答案 0 :(得分:91)
默认情况下,make
会在执行前打印每个命令。可以通过以下机制之一来抑制此打印:
@
-s
,--silent
或--quiet
的子标记,例如在$(MAKE) --silent -C someDir
中,例如。从那一刻开始,命令回显在sub-make中被抑制。如果你的makefile没有打印命令,那么它可能正在使用这三种机制中的一种,你必须实际检查makefile以找出哪些。
作为避免这些回声抑制机制的解决方法,您可以重新定义用于使用调试模式的shell,例如make SHELL="/bin/bash -x" target
。其他炮弹有类似的选择。使用这种方法,它不是make
打印命令,而是shell本身。
如果使用标志-n
或--just-print
,将忽略回声抑制机制,您将始终看到make
认为应该执行的所有命令 - 但它们是没有实际执行,只是印刷。这可能是一个很好的方法来弄清楚你真正期望看到的东西。
VERBOSE
变量对make
没有标准含义,但前提是你的makefile解释它。
答案 1 :(得分:2)
对于我的 make 版本,我发现两个参数 -n
和 -d
都有帮助。
GNU Make 3.80 版权所有 (C) 2002 自由软件基金会
-d Print lots of debugging information.
-n, --just-print, --dry-run, --recon
Don't actually run any commands; just print them.
当包含一堆 makefile 片段时,如果没有这个关键的调试标志,行号就没有意义。
CreateProcess(....exe,...)
Reading makefile `../../../../build/Makefile.options' (search path) (don't care) (no ~ expansion)...
Makefile:361: Extraneous text after `else' directive
Makefile:368: Extraneous text after `else' directive
Makefile:368: *** only one `else' per conditional. Stop.
答案 2 :(得分:1)
我认为这就是你想要的: make MAKE_VERBOSE = 1 target