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'.

°Ô½Ã¹°: 114 °Ç, ÇöÀç: 1 / 1 ÂÊ
¹øÈ£ Á¦       ¸ñ ÀÛ¼ºÀÚ µî·ÏÀÏ ¹æ¹®
117  [csh].cshrc alias JMJS 25.7.4 31
116  [make] DUMPON eval ifeq JMJS 24.9.12 235
115  [make] .PHONY JMJS 24.3.28 255
114  [make] -n -d -r --debug=b JMJS 24.3.28 260
113  magick convert -rotate -append JMJS 23.10.12 278
112  dirname JMJS 23.3.20 343
111  zip a.zip -r ./a JMJS 23.2.1 363
110  ffmpeg AlwaysMovie JMJS 22.12.6 375
109  7za a abc.zip abc -> tar -c -z -f abc.zip abc JMJS 22.11.30 374
108  convert mogrify JMJS 23.2.1 443
107  [sh]array JMJS 19.8.14 499
106  arithmetic in a makefile, shell pwd export JMJS 17.9.8 4549
105  Split and merge large files JMJS 16.3.21 1163
104  [Makefile]random JMJS 14.12.5 1525
100  À©µµ¿ì7 ¿ë·®ºÎÁ· winsxs Æú´õ ÃÖÀûÈ­ JMJS 14.10.14 2467
99  [sh,csh]while loop JMJS 13.2.6 2508
98  hostname, hostid, /sbin/ifconfig eth0 JMJS 13.1.4 4540
97  [linux]fedora 16 gome-shell extension JMJS 12.3.12 2247
96  [linux]fedora 16 grub boot order change JMJS 12.3.10 2449
95  [linux]fedora Input Method,ibus,hangul JMJS 12.3.8 2149
94  [linux]audio,mp3,mplayer,gstreamer,vlc JMJS 12.3.7 2857
93  [sh].wrapper example JMJS 11.6.15 2463
92  [make]for loop JMJS 11.9.8 2116
91  [make]conditional expression JMJS 11.5.12 2023
90  [make]shell ½ÇÇà JMJS 11.3.9 2149
89  [wish]jplot JMJS 10.5.12 2009
88  yum JMJS 09.8.12 1821
87  [CYGWIN]X setupÇϱâ JMJS 10.8.6 3180
86  [Make]Makefile Brief JMJS 10.8.6 1861
85  ldd /user/bin/xterm JMJS 09.4.24 1534
84  [HTML]¾îµµºñ SVG ºä¾î¿Í HTML JMJS 09.4.24 2121
83  [DOS]DOS command JMJS 09.7.20 1802
82  [DOS]DOS command brief JMJS 07.2.21 2279
81  À¥ÆäÀÌÁö ¼Ò½ºº¸±â JMJS 09.4.24 1796
80  [html]ÀÚµ¿À¸·Î ±ÛÀÚ»ö ¹Ù²ñ JMJS 07.1.10 1730
79  [html]º¹»ç, µå·¡±× ±ÝÁö JMJS 07.1.10 2242
78  [csh]cshell¿¡¼­ function ¸ø¾´´Ù³×¿ä JMJS 11.3.17 1779
77  ¸®´ª½º¿¡¼­ i386,i586,i686, x86ÀÇ Â÷ÀÌÁ¡ JMJS 06.10.16 2049
76  [CSH]$status JMJS 06.8.21 1504
75  [sh]substr, read, until,IFS,for,dirname JMJS 14.12.19 1703
74  [sh]rgbview.sh . hello.sh JMJS 10.11.30 1637
73  automount - /etc/fstab JMJS 06.2.23 1641
72  lmutil.csh JMJS 05.11.8 1986
71  È­ÀÏÀ̸§¿¡ ¸ø¿À´Â ¹®ÀÚ JMJS 05.9.8 1772
70  /usr/ucb /usr/ccs JMJS 05.9.5 1628
69  Solaris Version JMJS 05.9.5 1855
68  /usr/ccs/bin/nm -x debpli.so JMJS 05.8.31 2114
67  tar, gzip, zcat, uncompress, mn(.a ÆÄÀϺ¸±â) JMJS 13.1.6 1970
66  find . -name -print -exec perl JMJS 09.4.17 1954
65  pkgadd -d packagefile JMJS 05.5.9 1657
64  prstat JMJS 08.10.2 1924
63  vi ¸í·É¾î, vim¸í·É¾î gvim JMJS 25.6.1 5102
62  grep -Rs µî multiple directory ¿¡¼­ grep ? JMJS 24.12.19 2111
61  [csh].cshrc_axis JMJS 04.5.14 1944
60  [csh].cshrc_modelsim JMJS 04.5.14 2086
59  [csh].cshrc_cadence JMJS 04.5.14 2106
58  [csh].cshrc_novas JMJS 04.5.14 2017
57  [csh].cshrc_verisity JMJS 04.5.14 2384
56  lmgrd JMJS 09.6.22 2686
55  [csh]which case JMJS 04.5.14 1947
54  [bash]example 2 JMJS 04.5.12 2187
53  [bash]example 1 JMJS 04.5.12 2060
52  fedora 12¿¡¼­ touchpad disable JMJS 11.1.17 2122
51  [Perl]Çѱ¹¾î ÀÎÄÚµù JMJS 04.1.16 2972
50  [Perl]HTML¿¡¼­ ±âÈ£ Ç¥½Ã¸¦ À§ÇÑ ¹®ÀÚġȯ JMJS 04.1.5 11177
49  [csh]make awk JMJS 03.6.6 2361
48  [csh]wordsplit JMJS 03.6.6 1973
47  [csh]vi2 JMJS 03.6.6 1819
46  [csh]cat.csh JMJS 03.6.6 1875
45  [csh]chgword.csh JMJS 03.6.6 1828
44  [bash]password JMJS 11.3.9 1723
43  [Tcl]bi2int JMJS 02.11.29 1753
42  [PC]ask °Ë»öâÀÌ ÀÚ²Ù ¶á´Ù¸é JMJS 09.4.24 2253
41  [csh]backup_copyc.csh; foreach cat ; continue JMJS 25.7.8 1925
40  uname, uname -s -r, uname -p, uname -a JMJS 09.4.24 2102
39  [tk]»õ â ¿­°í ´Ý±â ¿¹Á¦ JMJS 09.4.24 11719
38  [sh]if [[ "$abc" == "abc" && "$bbc" == "bbc" ]]; ... JMJS 11.3.17 1844
37  [expect]expect_scp.exp JMJS 11.3.9 1887
36  ssh -x -l soc lion scp -r ... JMJS 11.3.9 1706
35  TclTk ¹è¿­ JMJS 09.7.20 1791
34  ./configure make make install JMJS 11.1.13 1722
33  [csh]diff JMJS 10.7.14 1751
32  tr abc 123 < file1 > file2 JMJS 11.4.11 1710
31  Installing RPMforge JMJS 10.2.8 1786
30  [ű×]±ÛÀÚ»öÀÌ »ç¶óÁü JMJS 09.4.24 1870
29  [ű×]ÀÚµ¿À¸·Î ±ÛÀÚ»öÀÌ º¯ÇÔ JMJS 09.4.24 1847
28  ±ÛÀÚÅÂ±× ¸ðÀ½ JMJS 09.4.24 1994
27  »ö»ó¸í°ú RGB°ª Ç¥ JMJS 09.4.24 2012
26  RGB »ö»óÇ¥ JMJS 09.4.24 2173
25  ÇÑ±ÛÆ¯¼ö¹®ÀÚÇ¥ JMJS 09.4.24 2084
24  bc -l JMJS 01.5.22 1756
23  file *,  od -xc *, cat * JMJS 01.3.28 2073
22  Linux Memo JMJS 09.7.20 1932
21  xterm -fn 10x20 & JMJS 12.3.7 1751
20  W/S Tip JMJS 09.4.29 1828
19  [awk]example JMJS 10.10.30 2070
18  [csh].cshrc JMJS 11.6.21 2547
17  stop & background job JMJS 00.11.14 1740
16  W/S shout down JMJS 00.11.14 1695
15  [sed]example JMJS 16.9.5 2094
14  [DOS]Memo JMJS 00.10.29 1821
13  [csh]¸®½ºÆ®¸¦ ¸¸µé¾î foreach·Î ó¸®ÇÒ¶§ JMJS 00.10.7 5566
12  [Tcl]Tool Command Language JMJS 09.7.24 3235
11  [csh]vi.csh JMJS 00.6.27 1845
10  [csh]Check Process JMJS 00.6.27 1770
9  [csh]Get Character and get char without 'return' JMJS 10.2.8 1918
8  [csh]foreach SED JMJS 00.6.27 2218
7  [Window]¿À·ùº¸°í ¾È ¶ß°ÔÇÏ´Â ¹æ¹ý JMJS 09.9.23 1791
6  [csh]echo.csh JMJS 00.6.27 1983
5  set DDD = `date '+%y%m'` JMJS 00.6.27 1679
4  [SH]Advanced Bash-Scripting Guide JMJS 09.4.24 1645
3  [csh]Beep : echo ^G;sleep 1 JMJS 00.6.27 1974
2  [csh]if ($abc == $bbc) then _ else _ endif JMJS 00.6.27 2162
1  [csh]ARGV JMJS 00.6.27 2249
[1]