← 홈

🔨Makefile

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

📝 Makefile 기본

📦 기본 구조

target: prerequisites \trecipe 기본 규칙 구조
all: target1 target2 기본 타겟
.PHONY: clean test 가상 타겟
.DEFAULT_GOAL := target 기본 목표 설정
include other.mk 다른 makefile 포함

📊 변수

VAR = value 재귀 변수
VAR := value 단순 변수
VAR ?= value 조건부 (설정 안 된 경우)
VAR += value 변수에 추가
$(VAR) or ${VAR} 변수 사용
export VAR 서브 make로 내보내기
override VAR = value 명령줄 재정의

자동 변수

$@ 타겟 이름
$< 첫 번째 전제조건
$^ 모든 전제조건
$? 타겟보다 새로운 전제조건
$* 패턴 규칙의 어간
$(@D) / $(@F) 타겟 디렉토리/파일
$(<D) / $(<F) 첫 전제조건 디렉토리/파일

🔧 패턴 & 함수

📐 패턴 규칙

%.o: %.c 패턴 규칙
$(BUILD)/%.o: %.c 디렉토리 있는 패턴
%.o: %.c %.h 다중 전제조건

📝 문자열 함수

$(subst from,to,text) 텍스트 치환
$(patsubst %.c,%.o,$(SRCS)) 패턴 치환
$(strip text) 공백 제거
$(findstring find,text) 문자열 찾기
$(filter pattern,text) 단어 필터
$(filter-out pattern,text) 단어 제외 필터
$(sort list) 정렬 및 중복 제거
$(word n,text) n번째 단어 얻기
$(words text) 단어 수

📁 파일 함수

$(wildcard *.c) 파일 매칭
$(dir path/file.c) 디렉토리 얻기
$(notdir path/file.c) 파일명 얻기
$(suffix file.c) 접미사 얻기
$(basename file.c) 기본 이름 얻기
$(addsuffix .o,$(FILES)) 접미사 추가
$(addprefix src/,$(FILES)) 접두사 추가
$(join list1,list2) 리스트 결합
$(realpath path) 실제 경로 얻기
$(abspath path) 절대 경로 얻기

🔀 조건문 & 루프

조건문

ifeq ($(VAR),value) ... endif 같으면
ifneq ($(VAR),value) ... endif 같지 않으면
ifdef VAR ... endif 정의되어 있으면
ifndef VAR ... endif 정의되어 있지 않으면
else else 절
$(if condition,then,else) 인라인 if
$(or cond1,cond2) or 조건
$(and cond1,cond2) and 조건

🔄 루프 & 반복

$(foreach var,list,text) foreach 루프
$(call func,arg1,arg2) 함수 호출
define FUNC ... endef 함수 정의
$(eval $(call TEMPLATE,args)) 표현식 평가

💻 셸 & 명령어

🖥️ 셸 명령어

$(shell command) 셸 명령 실행
@command 조용히 (에코 없음)
-command 에러 무시
+command -n에서도 실행
command1 && command2 명령 연결
command1; command2 순차 명령
$(info message) 정보 메시지 출력
$(warning message) 경고 출력
$(error message) 에러 출력 후 종료

⚙️ Make 옵션

make -n 드라이 런
make -j4 병렬 작업
make -f other.mk 다른 makefile 사용
make VAR=value 변수 재정의
make -C dir 디렉토리 변경
make -k 에러 시 계속
make -B 전체 강제 재빌드
make --debug 디버그 출력

📋 일반적인 예제

⚙️ C 프로젝트 예제

CC := gcc C 컴파일러
CFLAGS := -Wall -g 컴파일러 플래그
SRCS := $(wildcard *.c) 소스 파일
OBJS := $(SRCS:.c=.o) 오브젝트 파일
TARGET := program 출력 이름
$(TARGET): $(OBJS) \t$(CC) -o $@ $^ 링크 규칙
%.o: %.c \t$(CC) $(CFLAGS) -c $< -o $@ 컴파일 규칙

🎯 일반적인 타겟

clean: \trm -f $(OBJS) $(TARGET) clean 타겟
install: \tcp $(TARGET) /usr/local/bin install 타겟
test: \t./run_tests.sh test 타겟
help: \t@echo "Available targets" help 타겟

💡 팁 & 모범 사례

유용한 팁

  • 레시피 들여쓰기에 탭 사용 (스페이스 아님)
  • 파일이 아닌 타겟에 .PHONY 사용
  • 즉시 평가에 := 사용
  • 명령 에코 억제에 @ 사용
  • 동적 파일 목록에 wildcard 사용
  • 병렬 빌드에 -j 사용
  • 항상 clean 타겟 제공