Build Systems
CMake, GNU Make, Bazel
GNU Make
gnu-make
GNU Make 소개와 첫 Makefile — 설치부터 첫 빌드까지
GNU Make의 역할, 설치 방법, 첫 Makefile 작성과 실행.
Make 규칙 분석 — 타겟·의존성·레시피의 평가
Makefile 규칙의 구성 요소와 동작 방식 — 다중 타겟, order-only, 레시피 접두사, 이중 콜론까지.
Make 변수와 자동 변수 — $@·$<·$^·재귀 vs 단순 할당
Make 변수의 두 가지 확장 방식, 자동 변수, 우선순위 — 같은 코드가 미묘하게 다르게 도는 9할의 원인.
Make 패턴 규칙과 암시적 규칙 — % 매칭 동작
% 한 글자로 100개의 규칙을 줄이는 패턴 규칙, Make 내장 암시적 규칙, 그리고 둘의 충돌·우선순위.
Make 함수 분석 — wildcard·patsubst·foreach·shell
내장 함수로 텍스트·파일·조건을 다루기 — wildcard / patsubst / filter / shell / foreach / call / eval.
Make 조건문과 include — ifeq·ifdef·include·-include
파싱 시점 조건 분기, Makefile 분할, 그리고 -MMD -MP로 헤더 의존성을 자동 추적하는 표준 패턴.
실전 Makefile 예제 — C/C++ 프로젝트용 기본 골격
기본 C/C++부터 라이브러리, 크로스 컴파일, 테스트 통합까지 — 실제 프로젝트에 그대로 쓰는 Makefile 패턴.
CMake
cmake
CMake 소개와 첫 프로젝트 — 설치부터 빌드까지
왜 메타 빌드 시스템이 필요한가, CMake가 그 자리에서 무엇을 하는가, 그리고 5줄 짜리 첫 프로젝트.
CMake 언어 분석 — 변수·조건문·함수의 동작
CMake 스크립트의 기본 문법: 변수, 리스트, 조건문, 반복문, 함수.
CMake 타겟과 라이브러리 — INTERFACE·PUBLIC·PRIVATE 전파
Modern CMake의 핵심: 타겟 중심 접근법과 라이브러리 생성.
CMake 옵션과 캐시 변수 — option·set·cache type 분석
사용자 설정 가능한 빌드 옵션과 CMake 캐시 시스템.
CMake find_package와 외부 의존성 — Module·Config·FetchContent
외부 라이브러리 탐색, FetchContent, 그리고 의존성 관리.
CMake 테스트와 CTest — add_test·테스트 fixture·리포트
CMake 테스트 프레임워크 CTest와 Google Test, Catch2 연동 방법.
CMake 설치와 패키징 — install·EXPORT·CPack
install 명령으로 빌드 결과물 배포, CPack으로 플랫폼별 패키지 생성.
Modern CMake 베스트 프랙티스 — target_* 중심 설계
타겟 중심 접근법, 피해야 할 안티패턴, 대규모 프로젝트 구성 전략.
Modern CMake 고급 — BUILD/INSTALL_INTERFACE·Presets·cmake -E
Modern CMake의 고급 도구 모음 — 자주 안 보이지만 실무에서 결정적인 기능들.