LogIn E-mail
¼³°èÀ̾߱â
[make] .PHONY
# 115 JMJS    24.3.28 11:23

1. ½ÇÁ¦ ÆÄÀϸí°ú target À̸§ÀÇ Ãæµ¹¹®Á¦¸¦ ÇØ°áÇÑ´Ù.

2. ¼º´ÉÀ» Çâ»ó½ÃŲ´Ù.

.PHONY¸¦ ¾²´Â ù¹ø° ÀÌÀ¯: ½ÇÁ¦ ÆÄÀÏÀ̸§°úÀÇ Ãæµ¹À» ÇØ°á
 

Phony´Â °¡Â¥¶ó´Â ÀǹÌÀ̸ç phony target À̶õ ½ÇÁ¦ ÆÄÀÏÀ̸§ÀÌ ¾Æ´Ñ targetÀ» ÀǹÌÇÑ´Ù.

make ¸í·ÉÀÌ ½ÇÇàµÇ´Â µð·ºÅ丮¿¡ MakefileÀÇ target°ú °°Àº À̸§ÀÇ ÆÄÀÏÀÌ Á¸ÀçÇÒ °æ¿ì¿¡ Ãæµ¹ÀÌ ¹ß»ýÇϴµ¥ .PHONY¿¡ ¸í½ÃÇÏ¿©  À̸¦ ȸÇÇÇÒ ¼ö ÀÖ´Ù.

 

¸¸¾à test¶ó´Â ÆÄÀÏÀÌ ÀÖ´Â µð·ºÅ丮¿¡¼­ make test ¶ó°í ÆÄÀÏÀ̸§°ú °°Àº targetÀÎ test¸¦ ½ÇÇàÇÏ¸é ¾î¶»°Ô µÉ±î?

 

.PHONY¿¡ ¸í½ÃÇÑ °æ¿ì ¾Æ·¡¿Í °°ÀÌ Á¤»óÀûÀ¸·Î ½ÇÇàµÈ´Ù.

# .PHONY¸¦ »ç¿ëÇÏ´Â Makefile
.PHONY: test
test:
  @echo test makefile
Shell¿¡¼­ ½ÇÇà °á°ú

¡æ make test
test makefile
 

.PHONY¿¡ ¸í½ÃÇÏÁö ¾ÊÀº °æ¿ì test¶ó´Â ÆÄÀÏÀ» ÀνÄÇÏ°í MakefileÀÇ target ³»¿ëÀÌ ½ÇÇàµÇÁö ¾Ê´Â´Ù.

# .PHONY¸¦ »ç¿ëÇÏÁö ¾Ê´Â Makefile
test:
  @echo test makefile
Shell¿¡¼­ ½ÇÇà°á°ú

¡æ make test
make: `test'´Â ÀÌ¹Ì °»½ÅµÇ¾ú½À´Ï´Ù.
 
.PHONY¸¦ ¾²´Â µÎ ¹ø° ÀÌÀ¯: ¼º´É °³¼±
 

Makefile ¾È¿¡¼­ make¸¦ ´Ù½Ã ½ÇÇà½ÃÅ°´Â °æ¿ì¸¦ »ý°¢Çغ¸ÀÚ.

¾Æ·¡ ¸µÅ©¿¡¼­ Àß ¼³¸íµÇ¾î ÀÖÀ¸¸ç ¿©±âÀÇ ¿¹Á¦¸¦ °¡Á®´Ù ¼³¸íÇغ»´Ù.

- °£°áÇÑ ¿¹Á¦ ¸µÅ©: https://sodocumentation.net/makefile/topic/5542/-phony-target

 

/main
     |_ Makefile
     |_ /foo
            |_ Makefile
            |_ ... // other files
     |_ /bar
            |_ Makefile
            |_ ... // other files
     |_ /koo
            |_ Makefile
            |_ ... // other files
 

main µð·ºÅ丮ÀÇ MakefileÀÌ ¾Æ·¡¿Í °°À» ¶§¿¡ $make subdirs¸¦ ½ÇÇà½ÃÅ°¸é ¾î¶»°Ô µÉ±î?

SUBDIRS = foo bar koo

subdirs:
        for dir in $(SUBDIRS); do \
          $(MAKE) -C $$dir; \
        done
 

µÎ °¡Áö ¹®Á¦Á¡ÀÌ ÀÖ´Ù.

1. ÇÏÀ§ make¿¡¼­ ¿¡·¯°¡ ¹ß»ýÇصµ °è¼Ó ºôµå°¡ ÁøÇàµÈ´Ù.

2. ÇϳªÀÇ ±ÔÄ¢¸¸ÀÌ ½ÇÇàµÇ±â¿¡ makeÀÇ ÀåÁ¡ÀÎ º´·Ä ¼öÇàÀÌ µÇÁö ¾Ê´Â´Ù.

 

 

ÀÌ·¸°Ô .PHONY¸¦ ÀÌ¿ëÇϸé À§ÀÇ ¹®Á¦µéÀÌ ¸ðµÎ ÇØ°áµÈ´Ù.

 

SUBDIRS = foo bar koo

.PHONY: subdirs $(SUBDIRS)
subdirs: $(SUBDIRS)

$(SUBDIRS):
        $(MAKE) -C $@

°Ô½Ã¹°: 113 °Ç, ÇöÀç: 1 / 1 ÂÊ
¹øÈ£ Á¦       ¸ñ ÀÛ¼ºÀÚ µî·ÏÀÏ ¹æ¹®
116  [make] DUMPON eval ifeq JMJS 24.9.12 55
115  [make] .PHONY JMJS 24.3.28 98
114  [make] -n -d -r --debug=b JMJS 24.3.28 104
113  magick convert -rotate -append JMJS 23.10.12 131
112  dirname JMJS 23.3.20 188
111  zip a.zip -r ./a JMJS 23.2.1 215
110  ffmpeg AlwaysMovie JMJS 22.12.6 219
109  7za a abc.zip abc -> tar -c -z -f abc.zip abc JMJS 22.11.30 217
108  convert mogrify JMJS 23.2.1 304
107  [sh]array JMJS 19.8.14 356
106  arithmetic in a makefile, shell pwd export JMJS 17.9.8 4409
105  Split and merge large files JMJS 16.3.21 1015
104  [Makefile]random JMJS 14.12.5 1395
100  À©µµ¿ì7 ¿ë·®ºÎÁ· winsxs Æú´õ ÃÖÀûÈ­ JMJS 14.10.14 2327
99  [sh,csh]while loop JMJS 13.2.6 2365
98  hostname, hostid, /sbin/ifconfig eth0 JMJS 13.1.4 4390
97  [linux]fedora 16 gome-shell extension JMJS 12.3.12 2070
96  [linux]fedora 16 grub boot order change JMJS 12.3.10 2307
95  [linux]fedora Input Method,ibus,hangul JMJS 12.3.8 1994
94  [linux]audio,mp3,mplayer,gstreamer,vlc JMJS 12.3.7 2712
93  [sh].wrapper example JMJS 11.6.15 2320
92  [make]for loop JMJS 11.9.8 1980
91  [make]conditional expression JMJS 11.5.12 1881
90  [make]shell ½ÇÇà JMJS 11.3.9 2007
89  [wish]jplot JMJS 10.5.12 1656
88  yum JMJS 09.8.12 1689
87  [CYGWIN]X setupÇϱâ JMJS 10.8.6 3034
86  [Make]Makefile Brief JMJS 10.8.6 1719
85  ldd /user/bin/xterm JMJS 09.4.24 1400
84  [HTML]¾îµµºñ SVG ºä¾î¿Í HTML JMJS 09.4.24 1980
83  [DOS]DOS command JMJS 09.7.20 1664
82  [DOS]DOS command brief JMJS 07.2.21 2138
81  À¥ÆäÀÌÁö ¼Ò½ºº¸±â JMJS 09.4.24 1659
80  [html]ÀÚµ¿À¸·Î ±ÛÀÚ»ö ¹Ù²ñ JMJS 07.1.10 1596
79  [html]º¹»ç, µå·¡±× ±ÝÁö JMJS 07.1.10 2098
78  [csh]cshell¿¡¼­ function ¸ø¾´´Ù³×¿ä JMJS 11.3.17 1645
77  ¸®´ª½º¿¡¼­ i386,i586,i686, x86ÀÇ Â÷ÀÌÁ¡ JMJS 06.10.16 1906
76  [CSH]$status JMJS 06.8.21 1366
75  [sh]substr, read, until,IFS,for,dirname JMJS 14.12.19 1571
74  [sh]rgbview.sh . hello.sh JMJS 10.11.30 1496
73  automount - /etc/fstab JMJS 06.2.23 1502
72  lmutil.csh JMJS 05.11.8 1831
71  È­ÀÏÀ̸§¿¡ ¸ø¿À´Â ¹®ÀÚ JMJS 05.9.8 1627
70  /usr/ucb /usr/ccs JMJS 05.9.5 1492
69  Solaris Version JMJS 05.9.5 1710
68  /usr/ccs/bin/nm -x debpli.so JMJS 05.8.31 1978
67  tar, gzip, zcat, uncompress, mn(.a ÆÄÀϺ¸±â) JMJS 13.1.6 1832
66  find . -name -print -exec perl JMJS 09.4.17 1807
65  pkgadd -d packagefile JMJS 05.5.9 1526
64  prstat JMJS 08.10.2 1790
63  vi ¸í·É¾î, vim¸í·É¾î gvim JMJS 24.4.28 4949
62  grep -Rs µî multiple directory ¿¡¼­ grep ? JMJS 24.12.19 1972
61  [csh].cshrc_axis JMJS 04.5.14 1809
60  [csh].cshrc_modelsim JMJS 04.5.14 1939
59  [csh].cshrc_cadence JMJS 04.5.14 1970
58  [csh].cshrc_novas JMJS 04.5.14 1871
57  [csh].cshrc_verisity JMJS 04.5.14 2239
56  lmgrd JMJS 09.6.22 2554
55  [csh]which case JMJS 04.5.14 1821
54  [bash]example 2 JMJS 04.5.12 2050
53  [bash]example 1 JMJS 04.5.12 1922
52  fedora 12¿¡¼­ touchpad disable JMJS 11.1.17 1996
51  [Perl]Çѱ¹¾î ÀÎÄÚµù JMJS 04.1.16 2829
50  [Perl]HTML¿¡¼­ ±âÈ£ Ç¥½Ã¸¦ À§ÇÑ ¹®ÀÚġȯ JMJS 04.1.5 11017
49  [csh]make awk JMJS 03.6.6 2202
48  [csh]wordsplit JMJS 03.6.6 1845
47  [csh]vi2 JMJS 03.6.6 1687
46  [csh]cat.csh JMJS 03.6.6 1743
45  [csh]chgword.csh JMJS 03.6.6 1689
44  [bash]password JMJS 11.3.9 1587
43  [Tcl]bi2int JMJS 02.11.29 1604
42  [PC]ask °Ë»öâÀÌ ÀÚ²Ù ¶á´Ù¸é JMJS 09.4.24 2116
41  [csh]backup_copyc.csh; foreach; continue JMJS 09.4.24 1777
40  uname, uname -s -r, uname -p, uname -a JMJS 09.4.24 1975
39  [tk]»õ â ¿­°í ´Ý±â ¿¹Á¦ JMJS 09.4.24 11585
38  [sh]if [[ "$abc" == "abc" && "$bbc" == "bbc" ]]; ... JMJS 11.3.17 1703
37  [expect]expect_scp.exp JMJS 11.3.9 1759
36  ssh -x -l soc lion scp -r ... JMJS 11.3.9 1566
35  TclTk ¹è¿­ JMJS 09.7.20 1642
34  ./configure make make install JMJS 11.1.13 1579
33  [csh]diff JMJS 10.7.14 1625
32  tr abc 123 < file1 > file2 JMJS 11.4.11 1572
31  Installing RPMforge JMJS 10.2.8 1661
30  [ű×]±ÛÀÚ»öÀÌ »ç¶óÁü JMJS 09.4.24 1727
29  [ű×]ÀÚµ¿À¸·Î ±ÛÀÚ»öÀÌ º¯ÇÔ JMJS 09.4.24 1711
28  ±ÛÀÚÅÂ±× ¸ðÀ½ JMJS 09.4.24 1863
27  »ö»ó¸í°ú RGB°ª Ç¥ JMJS 09.4.24 1875
26  RGB »ö»óÇ¥ JMJS 09.4.24 2030
25  ÇѱÛƯ¼ö¹®ÀÚÇ¥ JMJS 09.4.24 1938
24  bc -l JMJS 01.5.22 1620
23  file *,  od -xc *, cat * JMJS 01.3.28 1937
22  Linux Memo JMJS 09.7.20 1792
21  xterm -fn 10x20 & JMJS 12.3.7 1610
20  W/S Tip JMJS 09.4.29 1700
19  [awk]example JMJS 10.10.30 1933
18  [csh].cshrc JMJS 11.6.21 2396
17  stop & background job JMJS 00.11.14 1594
16  W/S shout down JMJS 00.11.14 1560
15  [sed]example JMJS 16.9.5 1959
14  [DOS]Memo JMJS 00.10.29 1685
13  [csh]¸®½ºÆ®¸¦ ¸¸µé¾î foreach·Î ó¸®ÇÒ¶§ JMJS 00.10.7 5418
12  [Tcl]Tool Command Language JMJS 09.7.24 3093
11  [csh]vi.csh JMJS 00.6.27 1703
10  [csh]Check Process JMJS 00.6.27 1636
9  [csh]Get Character and get char without 'return' JMJS 10.2.8 1765
8  [csh]foreach SED JMJS 00.6.27 2078
7  [Window]¿À·ùº¸°í ¾È ¶ß°ÔÇÏ´Â ¹æ¹ý JMJS 09.9.23 1646
6  [csh]echo.csh JMJS 00.6.27 1832
5  set DDD = `date '+%y%m'` JMJS 00.6.27 1548
4  [SH]Advanced Bash-Scripting Guide JMJS 09.4.24 1507
3  [csh]Beep : echo ^G;sleep 1 JMJS 00.6.27 1841
2  [csh]if ($abc == $bbc) then _ else _ endif JMJS 00.6.27 2038
1  [csh]ARGV JMJS 00.6.27 2112
[1]