Gerbera/Makefile
2026-06-25 13:48:22 +09:00

37 lines
1.2 KiB
Makefile

# 컴파일러와 플래그 기본값은 환경 변수나 make 인자로 덮어쓸 수 있습니다.
CC ?= cc
CPPFLAGS ?= -Iinclude
CFLAGS ?= -std=c11 -O2 -Wall -Wextra -Wpedantic
LDLIBS ?=
# Windows 빌드는 호환 컴파일러/링커를 사용할 때 bcrypt가 필요합니다.
ifeq ($(OS),Windows_NT)
LDLIBS += -lbcrypt
endif
# 최종 실행 파일 경로, 소스 목록, 여기서 파생되는 오브젝트 파일 경로입니다.
TARGET := build/gerbera
SOURCES := src/main.c src/encrypt.c src/decrypt.c src/cipher.c
OBJECTS := $(SOURCES:src/%.c=build/%.o)
# 모든 오브젝트 파일을 컴파일한 뒤 실행 파일을 링크합니다.
$(TARGET): $(OBJECTS)
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)
# 각 C 파일을 build/<name>.o로 컴파일하며, 필요하면 build/를 먼저 만듭니다.
build/%.o: src/%.c include/gerbera.h | build
$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
# 컴파일이나 링크 전에 출력 디렉터리가 존재하도록 보장합니다.
build:
mkdir -p build
.PHONY: clean test
# 방금 빌드한 실행 파일로 셸 테스트 모음을 실행합니다.
test: $(TARGET)
GERBERA_BIN=./$(TARGET) sh tests/test.sh
# 생성된 모든 빌드 산출물을 삭제합니다.
clean:
rm -rf build