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 |
댓글