LogIn E-mail
¼³°èÀ̾߱â
[make] -n -d -r --debug=b
# 114 JMJS    24.3.28 11:07

Know what shell commands / recipes are executed with Make

When I execute Make, I'd like to know what shell commands / recipes are executed (and perhaps which line in which Makefile invoked these). Is there a way of doing this (print onto the stdout or write to a file) without modifying the Makefiles?

-n: echos commands that would be run, but without running them.
    This will also echo commands that are prefixed with @.

-d: print debug output. This will output the process that make goes through in attempting to find rules that match the targets that it's trying to make. There will be a lot of useless information in here, as it will try many default build rules (like how to build .o files from .c). There are a few ways to cut down on the noise:

-r: disable implicit rules. If you don't depend on any of the default rules , this can be used in conjunction with -d to just print the parts you (mostly) care about

--debug=b: basic debug mode. prints what it's trying to make, but not any information about implicit rules.
None of these print the line numbers of the commands, but make -n --debug=b will print both the targets being built and the commands being run, so it's almost as good. Example below.

$ cat makefile:

c: a b
    cat $^ > $@

a:
    echo 'foo' > $@

b: a
    cat $^ > $@
    echo 'bar' >> $@
$ make -n --debug=b:

Reading makefiles...
Updating goal targets....
   File 'a' does not exist.
  Must remake target 'a'.
echo 'foo' > a
  Successfully remade target file 'a'.
   File 'b' does not exist.
  Must remake target 'b'.
cat a > b
echo 'bar' >> b
  Successfully remade target file 'b'.
 Prerequisite 'a' is newer than target 'c'.
 Prerequisite 'b' is newer than target 'c'.
Must remake target 'c'.
cat a b > c
Successfully remade target file 'c'.

°Ô½Ã¹°: 113 °Ç, ÇöÀç: 1 / 1 ÂÊ
¹øÈ£ Á¦       ¸ñ ÀÛ¼ºÀÚ µî·ÏÀÏ ¹æ¹®
116  [make] DUMPON eval ifeq JMJS 24.9.12 190
115  [make] .PHONY JMJS 24.3.28 232
114  [make] -n -d -r --debug=b JMJS 24.3.28 238
113  magick convert -rotate -append JMJS 23.10.12 259
112  dirname JMJS 23.3.20 323
111  zip a.zip -r ./a JMJS 23.2.1 340
110  ffmpeg AlwaysMovie JMJS 22.12.6 350
109  7za a abc.zip abc -> tar -c -z -f abc.zip abc JMJS 22.11.30 332
108  convert mogrify JMJS 23.2.1 420
107  [sh]array JMJS 19.8.14 473
106  arithmetic in a makefile, shell pwd export JMJS 17.9.8 4526
105  Split and merge large files JMJS 16.3.21 1134
104  [Makefile]random JMJS 14.12.5 1502
100  À©µµ¿ì7 ¿ë·®ºÎÁ· winsxs Æú´õ ÃÖÀûÈ­ JMJS 14.10.14 2445
99  [sh,csh]while loop JMJS 13.2.6 2484
98  hostname, hostid, /sbin/ifconfig eth0 JMJS 13.1.4 4517
97  [linux]fedora 16 gome-shell extension JMJS 12.3.12 2220
96  [linux]fedora 16 grub boot order change JMJS 12.3.10 2426
95  [linux]fedora Input Method,ibus,hangul JMJS 12.3.8 2119
94  [linux]audio,mp3,mplayer,gstreamer,vlc JMJS 12.3.7 2832
93  [sh].wrapper example JMJS 11.6.15 2434
92  [make]for loop JMJS 11.9.8 2094
91  [make]conditional expression JMJS 11.5.12 1994
90  [make]shell ½ÇÇà JMJS 11.3.9 2128
89  [wish]jplot JMJS 10.5.12 1986
88  yum JMJS 09.8.12 1799
87  [CYGWIN]X setupÇϱâ JMJS 10.8.6 3154
86  [Make]Makefile Brief JMJS 10.8.6 1837
85  ldd /user/bin/xterm JMJS 09.4.24 1512
84  [HTML]¾îµµºñ SVG ºä¾î¿Í HTML JMJS 09.4.24 2092
83  [DOS]DOS command JMJS 09.7.20 1780
82  [DOS]DOS command brief JMJS 07.2.21 2255
81  À¥ÆäÀÌÁö ¼Ò½ºº¸±â JMJS 09.4.24 1773
80  [html]ÀÚµ¿À¸·Î ±ÛÀÚ»ö ¹Ù²ñ JMJS 07.1.10 1707
79  [html]º¹»ç, µå·¡±× ±ÝÁö JMJS 07.1.10 2212
78  [csh]cshell¿¡¼­ function ¸ø¾´´Ù³×¿ä JMJS 11.3.17 1757
77  ¸®´ª½º¿¡¼­ i386,i586,i686, x86ÀÇ Â÷ÀÌÁ¡ JMJS 06.10.16 2022
76  [CSH]$status JMJS 06.8.21 1481
75  [sh]substr, read, until,IFS,for,dirname JMJS 14.12.19 1679
74  [sh]rgbview.sh . hello.sh JMJS 10.11.30 1613
73  automount - /etc/fstab JMJS 06.2.23 1619
72  lmutil.csh JMJS 05.11.8 1963
71  È­ÀÏÀ̸§¿¡ ¸ø¿À´Â ¹®ÀÚ JMJS 05.9.8 1747
70  /usr/ucb /usr/ccs JMJS 05.9.5 1606
69  Solaris Version JMJS 05.9.5 1832
68  /usr/ccs/bin/nm -x debpli.so JMJS 05.8.31 2089
67  tar, gzip, zcat, uncompress, mn(.a ÆÄÀϺ¸±â) JMJS 13.1.6 1944
66  find . -name -print -exec perl JMJS 09.4.17 1926
65  pkgadd -d packagefile JMJS 05.5.9 1633
64  prstat JMJS 08.10.2 1900
63  vi ¸í·É¾î, vim¸í·É¾î gvim JMJS 25.6.1 5072
62  grep -Rs µî multiple directory ¿¡¼­ grep ? JMJS 24.12.19 2086
61  [csh].cshrc_axis JMJS 04.5.14 1917
60  [csh].cshrc_modelsim JMJS 04.5.14 2062
59  [csh].cshrc_cadence JMJS 04.5.14 2083
58  [csh].cshrc_novas JMJS 04.5.14 1991
57  [csh].cshrc_verisity JMJS 04.5.14 2356
56  lmgrd JMJS 09.6.22 2666
55  [csh]which case JMJS 04.5.14 1926
54  [bash]example 2 JMJS 04.5.12 2163
53  [bash]example 1 JMJS 04.5.12 2036
52  fedora 12¿¡¼­ touchpad disable JMJS 11.1.17 2100
51  [Perl]Çѱ¹¾î ÀÎÄÚµù JMJS 04.1.16 2946
50  [Perl]HTML¿¡¼­ ±âÈ£ Ç¥½Ã¸¦ À§ÇÑ ¹®ÀÚġȯ JMJS 04.1.5 11148
49  [csh]make awk JMJS 03.6.6 2339
48  [csh]wordsplit JMJS 03.6.6 1949
47  [csh]vi2 JMJS 03.6.6 1788
46  [csh]cat.csh JMJS 03.6.6 1855
45  [csh]chgword.csh JMJS 03.6.6 1804
44  [bash]password JMJS 11.3.9 1700
43  [Tcl]bi2int JMJS 02.11.29 1723
42  [PC]ask °Ë»öâÀÌ ÀÚ²Ù ¶á´Ù¸é JMJS 09.4.24 2229
41  [csh]backup_copyc.csh; foreach; continue JMJS 09.4.24 1893
40  uname, uname -s -r, uname -p, uname -a JMJS 09.4.24 2076
39  [tk]»õ â ¿­°í ´Ý±â ¿¹Á¦ JMJS 09.4.24 11692
38  [sh]if [[ "$abc" == "abc" && "$bbc" == "bbc" ]]; ... JMJS 11.3.17 1822
37  [expect]expect_scp.exp JMJS 11.3.9 1864
36  ssh -x -l soc lion scp -r ... JMJS 11.3.9 1684
35  TclTk ¹è¿­ JMJS 09.7.20 1760
34  ./configure make make install JMJS 11.1.13 1694
33  [csh]diff JMJS 10.7.14 1730
32  tr abc 123 < file1 > file2 JMJS 11.4.11 1686
31  Installing RPMforge JMJS 10.2.8 1766
30  [ű×]±ÛÀÚ»öÀÌ »ç¶óÁü JMJS 09.4.24 1848
29  [ű×]ÀÚµ¿À¸·Î ±ÛÀÚ»öÀÌ º¯ÇÔ JMJS 09.4.24 1825
28  ±ÛÀÚÅÂ±× ¸ðÀ½ JMJS 09.4.24 1969
27  »ö»ó¸í°ú RGB°ª Ç¥ JMJS 09.4.24 1988
26  RGB »ö»óÇ¥ JMJS 09.4.24 2151
25  ÇÑ±ÛÆ¯¼ö¹®ÀÚÇ¥ JMJS 09.4.24 2061
24  bc -l JMJS 01.5.22 1730
23  file *,  od -xc *, cat * JMJS 01.3.28 2048
22  Linux Memo JMJS 09.7.20 1910
21  xterm -fn 10x20 & JMJS 12.3.7 1716
20  W/S Tip JMJS 09.4.29 1808
19  [awk]example JMJS 10.10.30 2044
18  [csh].cshrc JMJS 11.6.21 2519
17  stop & background job JMJS 00.11.14 1710
16  W/S shout down JMJS 00.11.14 1670
15  [sed]example JMJS 16.9.5 2072
14  [DOS]Memo JMJS 00.10.29 1796
13  [csh]¸®½ºÆ®¸¦ ¸¸µé¾î foreach·Î ó¸®ÇÒ¶§ JMJS 00.10.7 5535
12  [Tcl]Tool Command Language JMJS 09.7.24 3208
11  [csh]vi.csh JMJS 00.6.27 1819
10  [csh]Check Process JMJS 00.6.27 1747
9  [csh]Get Character and get char without 'return' JMJS 10.2.8 1882
8  [csh]foreach SED JMJS 00.6.27 2195
7  [Window]¿À·ùº¸°í ¾È ¶ß°ÔÇÏ´Â ¹æ¹ý JMJS 09.9.23 1766
6  [csh]echo.csh JMJS 00.6.27 1954
5  set DDD = `date '+%y%m'` JMJS 00.6.27 1655
4  [SH]Advanced Bash-Scripting Guide JMJS 09.4.24 1617
3  [csh]Beep : echo ^G;sleep 1 JMJS 00.6.27 1951
2  [csh]if ($abc == $bbc) then _ else _ endif JMJS 00.6.27 2142
1  [csh]ARGV JMJS 00.6.27 2227
[1]