Notice
suyeonme
Makefile이란? 본문
Makefile이란?
Makefile은 make라는 빌드 자동화 도구에서 사용하는 파일로, 프로젝트를 빌드, 테스트, 배포하는 작업을 자동화하는 데 사용되는 파일이다. Python, C언어, Java등 다양한 언어에서 사용한다.
최근에 프론트엔드는 Next.js, 서버는 Python으로 구성된 모노레포 프로젝트를 보다가 Makefile을 발견했다.
Makefile은 Java에서는 Maven이나 Gradle, Javascript에서는 NPM script등의 빌드 도구로 대체할 수 있다.
Makefile 구성
- Target: 빌드할 파일 또는 수행할 작업의 이름
- Dependency: 타겟이 의존하는 파일이나 타겟, 종속성이 변경되면 타겟을 다시 빌드함
- Command: 타겟을 빌드하기 위해 수행할 명령
- .PHONY: make 명령이 실행되는 디렉토리에 Makefile의 target과 같은 이름의 파일이 존재할 경우에 충돌이 발생하는데 .PHONY에 명시하여 회피할 수 있다.
예를 들어, 코드를 포매팅하고 싶다면 make format을 입력하면 된다.
# 변수 정의
VENV = venv
PYTHON = $(VENV)/bin/python
PIP = $(VENV)/bin/pip
BLACK = $(VENV)/bin/black
FLAKE8 = $(VENV)/bin/flake8
PYTEST = $(VENV)/bin/pytest
# 기본 타겟
.PHONY: all
all: install lint test
# 가상 환경 설정
.PHONY: venv
venv:
python3 -m venv $(VENV)
# 패키지 설치
.PHONY: install
install: venv
$(PIP) install -r requirements.txt
# 코드 포매팅
.PHONY: format
format: venv
$(BLACK) .
# 린트 검사
.PHONY: lint
lint: venv
$(FLAKE8) .
# 테스트 실행
.PHONY: test
test: venv
$(PYTEST)
Makefile.venv
Makefile.venv 파일은 Python 프로젝트에서 가상 환경(virtual environment)을 설정하고 관리하는 Makefile이다. 따라서 Makefile.venv를 만들면 따로 가상환경을 만들지않아도 된다.
.gitignore에 등록해서 사용하면 된다!
# 가상 환경 생성 및 패키지 설치
make -f Makefile.venv
# 가상 환경 활성화
source .venv/bin/activate
# 패키지 업데이트
make -f Makefile.venv update
# 가상 환경 삭제
make -f Makefile.venv clean
'프로그래밍👩🏻💻 > 기타' 카테고리의 다른 글
gRPC, gRPC-gateway란? (0) | 2024.07.19 |
---|---|
데이터 파이프라인이란? (0) | 2024.07.12 |
.envrc 파일로 환경변수 자동으로 설정하기 (0) | 2024.07.07 |
[Nestjs, Axios] Access Token과 Refresh Token으로 인증 구현하기(클라이언트, 서버) (0) | 2024.06.18 |
[Fix] 모노레포 환경의 Vscode에서 Eslint가 동작하지않는 현상 (0) | 2024.05.05 |
Comments