โ ๊ธฐ๋ณธ
makefile ์์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํ์ผ ํ๊ฒ ๋ ๋๋ gcc/g++๋ก ์ปดํ์ผํ๋ค.
-
gcc -c main.c usa.c kor.c
-
gcc -o app.out main.o usa.o kor.o
์ฌ๊ธฐ์ ๋๋ํ ์ปดํ์ผ๋ฌ์ ๋ฆฌ๋
์ค๋
-
gcc -o app.out main.c usa.c kor.c
๋ฅผ ํตํด ์ ๋๊ณผ์ ์ ํ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๋ค.
โ Makefile ๋ง๋ค๊ธฐ
TARGET : DEPENDENCY
command
-
TARGET์ ๋ง๋ค๊ธฐ ์ํด์๋ DEPENDENCY๊ฐ ํ์ํ๋ค.
-
command ๋ช ๋ น์ ํตํด TARGET์ ๋ง๋ ๋ค.
โ๏ธ ex1) ๊ธฐ๋ณธ์ ์ธ Makefile ์ฒซ ๊ตฌ์ฑ (main.c kor.c usa.c → app.out)
app.out : main.o kor.o usa.o
gcc -o app.out main.o kor.o usa.o
main.o :
gcc -c main.c
kor.o :
gcc -c kor.c
usa.o :
gcc -c usa.c
โ๏ธ ex2) all์ ๊ฐ๋
(๊ฒฐ๊ตญ ๋๊ฐ ๋ง๋ค๊ณ ์ถ์๊ฒ ๋ญ๋, all์ด ์์ผ๋ฉด ๊ฐ์ฅ ์ฒ์์ ๋ช
๋ น๋ง ์คํ์ํจ๋ค. ์ฆ app.out : XXXX์ด ๊ฐ์ฅ ๋ฐ์ ์๋ ๊ฒฝ์ฐ main.o : ๋ง ์คํ์ํฌ ๊ฒ์ด๋ค)
๋ฐ๋ผ์ all์ ์จ์ค๋ค.(make ๋ช
๋ น์ด๋ก ์คํ์ํค๋ฉด Makefile์ all์ ๊ฐ์ฅ ๋จผ์ ์ฐพ์๊ฐ๋ค.)
all : app.out
app.out : main.o kor.o usa.o
gcc -o app.out main.o kor.o usa.o
main.o :
gcc -c main.c
kor.o :
gcc -c kor.c
usa.o :
gcc -c usa.c
โ๏ธ ex3) ๋ณ์ ์ฌ์ฉ
CC = gcc
TARGET = app.out
OBJS = main.o kor.o usa.o
all : $(TARGET)
$(TARGET) : $(OBJS)
$(CC) -o $(TARGET) $(OBJS)
main.o :
$(CC) -c main.c
kor.o :
$(CC) -c kor.c
usa.o :
$(CC) -c usa.c
โ๏ธ ex4)์ง์ ์ ์ฌ์ฉ( $@: Target์ ์๋ฏธ, $^: Dependency๋ฅผ ์๋ฏธ - ์๋ ์์ ์์ $^๋ $OBJ๋ฅผ ๋ปํจ)
(.c.o๋ Makefile์ด ์์นํ ๊ณต๊ฐ์ cํ์ผ์ ๋ชจ๋ objectํ์ผ๋ก ์ปดํ์ผํ๊ฒ ๋ค ๋ผ๋ ์๋ฏธ)
($(CC) -o $@ $< ๋ ๋ชจ๋ ๋ณ๊ฒฝ๋ cํ์ผ์ ๋ํด์ gcc -o app.out๋ฅผ ์งํํ๊ฒ ๋ค ๋ผ๋ ์๋ฏธ -> main.o : / kor.o / usa.o ๋ ์์ด๋ ๋จ)
CC = gcc
TARGET = app.out
OBJS = main.o kor.o usa.o
all : $(TARGET)
$(TARGET) : $(OBJS)
$(CC) -o $@ $^
.c.o:
$(CC) -c -o $@ $<
โ๏ธ ex5) CFLAGS์ LDFLAGS ์ฌ์ฉ
(CFLAGS๋ ์ปดํ์ผ ์ต์
์ด๋ค. -Wall -g -o ๋ ๋ชจ๋ warning์ ๋ณด๊ฒ ๋ค, ๋๋ฒ๊น
์ต์
, ์ต์ ํ ์ต์
)
(LDFLAGS๋ ๋งํฌ ์ต์
์ด๋ค. ๋ณดํต ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ํ๋ค. -lopenssl ์ openssl ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๊ฒ ๋ค)
CC = gcc
TARGET = app.out
OBJS = main.o kor.o usa.o
CFLAGS = -Wall -g -o
LDFLAGS = -lopenssl
all : $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
.c.o :
$(CC) $(CFLAGS) -c -o $@ $<
โ๏ธ ex6) ๋ง๋ฌด๋ฆฌ(clean → make clean ์ธ์๋ฅผ ์ค์ ๋ชฉ์ ํ์ผ๊ณผ ํ๊ฒํ์ผ์ ์ง์, ๋ฆฌ๋น๋ ๋ชฉ์ )
CC = gcc
TARGET = app.out
OBJS = main.o kor.o usa.o
CFLAGS = -Wall -g
LDFLAGS = -lopenssl
all : $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
.c.o:
$(CC) $(CFLAGS) -c -o $@ $<
clean :
rm -f $(OBJS) $(TARGET)
์ถ์ฒ: ์๊ณจ์ฌ๋ ๊ฐ๋ฐ์
'ํ๋ก๊ทธ๋๋ฐ ์ธ์ด > C++ ๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++] 8. ๋ฐ๋ณต๋ฌธ(์ฌํ)(feat. iterator, predicate, lambda) (0) | 2023.04.22 |
---|---|
[C/C++] 7. ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ(windows/linux) (1) | 2023.04.11 |
[C/C++] 6. ์ํธ๋ฆฌ ํฌ์ธํธ(Entry point)(feat. argc/argv) (0) | 2021.04.05 |
[C/C++] 5. ๋ฐ๋ณต๋ฌธ(Iteration statements) - while๋ฌธ(while loop) (0) | 2021.04.03 |
[C/C++] 4. ๋ฐ๋ณต๋ฌธ(Iteration statements) - for๋ฌธ(for loop) (0) | 2021.03.29 |
๋๊ธ