在不使用CMake时执行make make命令

gma*_*man 33 makefile

我看到这是同一个问题

在执行之前制作cmake打印命令

但这个答案对我不起作用.我猜这个答案只适用于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
Run Code Online (Sandbox Code Playgroud)

他们都没有工作.

make -v返回

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
Run Code Online (Sandbox Code Playgroud)

Rei*_*eek 98

默认情况下,make在执行命令之前会打印每个命令.可以通过以下机制之一来抑制此打印:

  • 在逐个案例的基础上,通过@在命令的开头添加
  • 全局,通过添加.SILENT内置目标.
  • 在make过程的某个地方,通过使用其中一个标志调用sub-make -s,--silent或者--quiet,$(MAKE) --silent -C someDir例如,如.从那一刻起,命令回显在子make中被抑制.

如果你的makefile没有打印命令,那么它可能正在使用这三种机制中的一种,你必须实际检查makefile以找出哪些.

作为避免这些回声抑制机制的解决方法,您可以重新定义用于使用调试模式的shell,例如make SHELL="/bin/bash -x" target.其他炮弹有类似的选择.使用这种方法,它不是make打印命令,而是打印shell本身.

如果使用标志-n或者--just-print,将忽略回声抑制机制,并且您将始终看到所有make认为应该执行的命令- 但它们实际上并未执行,只是打印.这可能是一个很好的方法来弄清楚你真正期望看到的东西.

VERBOSE变量没有标准含义make,但仅限于makefile解释它.

  • 啊啊......好吧,作为最后的手段,你可以通过在运行make时定义`SHELL =/bin/bash -x`来做一个解决方法 - 假设你可以使用bash.由于`make`使用`$ SHELL`中的值来执行命令,这将导致每个命令首先由于`-x`标志而被回显.我会将其添加到答案中,如果这对您有用,请告诉我. (3认同)
  • 这很奇怪.对我来说,`make SHELL ="/ bin/bash -x"target`显示所有已执行的shell命令,与makefile的外观无关.当你说'没有运气'时,这是否意味着你什么都没看到,或者它是否打印出了一些东西而不是你想要的命令?如果先做`make clean`然后`make SHELL ="/ bin/bash -x"target`怎么办? (2认同)