본문 바로가기
tech documents/memo

makefile

by kimtahen 2022. 2. 9.
반응형

https://wh00300.tistory.com/193?category=962385

 

Linux gcc를 이용한 컴파일 / Makefile study(2)

 이번에는 makefile을 실제로 작성 해보겠습니다.  먼저 linux환경이 필요한데, linux환경 없이 window만 사용하신 분은 본 블로그의 wsl 설치 포스팅을 참조하시기 바랍니다.  pwd에는 다음과 같이 구

wh00300.tistory.com

 

CC:=g++

CFLAGS=-Wall -g

TARGET=bin/main
SRC_DIRS=src

SRCS=$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp))
OBJS=$(SRCS:.cpp=.o)

run: all
    ./$(TARGET)

all: clean $(OBJS)
    $(CC) -o $(TARGET) $(OBJS) $(CFLAGS)

clean: 
    rm -f $(OBJS)
    rm -f $(TARGET)

c++를 컴파일하기 위한 코드이다. 실행파일은 bin 폴더에 들어가도록 했으며, source code는 src 폴더에 존재한다.

SRCS=$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp))

이 코드는 src 폴더 밑에 있는 모든 cpp파일을 찾아서 SRCS에 저장한다.

OBJS=$(SRCS:.cpp=.o)

이 코드에서는 SRCS에 저장된 모든 cpp파일에 대해서 .o로 바꾸어 OBJS에 저장한다.
이 시점에서 자동으로 object파일이 실제로 생성됐는데, 어떻게 가능한 것인지 궁금했다.

stackoverflow에서 그 해답을 찾을 수 있었다.
https://stackoverflow.com/questions/37163481/listing-cpp-or-o-in-makefile

 

listing .cpp or .o in makefile

I see in my current code base 2 patterns in makefiles: list all cpp files list all cpp files, but with the extension changed into .o Example: ex1.mk ... SRCS=src1.cpp src2.cpp ... ... ex2.mk ...

stackoverflow.com

 

반응형

'tech documents > memo' 카테고리의 다른 글

github 특정 파일 모든 commit에서 삭제 하기  (0) 2022.03.02
Ubuntu에서 폰트 설치하는 방법  (0) 2022.02.11
Alacritty 터미널 설치하기  (0) 2022.02.07
코드 조각모음  (0) 2022.01.20

댓글