개발/개발도구와 환경(22)
-
Makefile - 요약 정리
📌 Makefile 요약 정리Makefile은 프로젝트의 빌드(컴파일, 링크 등) 과정을 자동화하는 파일입니다.대규모 프로젝트에서는 여러 소스 파일을 컴파일하고 의존성을 관리하는 과정이 복잡해지므로,Makefile을 사용하여 자동화된 빌드 시스템을 구축하면 효율적입니다.1. Makefile이란?✅ Makefile은 make 명령어와 함께 사용되며, 프로젝트의 컴파일 및 빌드 과정을 정의하는 스크립트입니다.✅ 주요 역할여러 소스 파일을 자동으로 컴파일 및 링크변경된 파일만 증분 빌드(Incremental Build) 수행의존성(Dependency) 관리자동화된 빌드 시스템 구성 가능✅ 기본 실행 방법make➡ 현재 디렉토리의 Makefile을 찾아 규칙을 실행.✅ 특정 목표(Target) 실행make c..
2025.03.11 -
Makefile - 6. Makefile과 CMake 비교 (6-1. Makefile vs CMake)
📌 6-1. Makefile vs CMakeMakefile과 CMake는 소프트웨어 빌드를 자동화하는 도구입니다.Makefile은 로컬 환경에서 직접 컴파일 명령을 작성하는 방식,CMake는 다양한 플랫폼에서 Makefile 또는 다른 빌드 시스템을 자동 생성하는 방식입니다.이 섹션에서는 Makefile과 CMake의 차이점, CMake가 필요한 경우, 그리고 CMakeLists.txt의 기본 구조를 설명합니다.1. Makefile과 CMake의 차이점📌 1-1. Makefile과 CMake의 개념 빌드 시스템 개념Makefile직접 컴파일 및 빌드 명령을 작성하는 스크립트CMake크로스 플랫폼 빌드를 지원하며 다양한 빌드 시스템을 자동 생성하는 도구📌 1-2. Makefile vs CMake 비교..
2025.03.11 -
Makefile - 5. Makefile 최적화 및 실전 프로젝트 적용 (5-3. 실제 프로젝트에서 Makefile 적용)
📌 5-3. 실제 프로젝트에서 Makefile 적용Makefile을 활용하면 대규모 프로젝트에서도 효율적인 빌드 시스템을 구축할 수 있습니다.이번 섹션에서는 실제 프로젝트 구조를 기반으로 Makefile을 작성하는 방법을 살펴보겠습니다.1. 프로젝트 구조 예시다음과 같은 프로젝트 구조를 예제로 사용합니다.project/├── src/ # 소스 코드 디렉토리│ ├── main.c│ ├── utils.c│ └── utils.h├── include/ # 헤더 파일 저장 디렉토리│ └── config.h├── build/ # 빌드된 오브젝트 파일과 실행 파일이 저장될 디렉토리├── Makefile # 프로젝트 빌드를 위한 Makefile✅ 각..
2025.03.11 -
Makefile - 5. Makefile 최적화 및 실전 프로젝트 적용 (5-2. Makefile 디버깅 (Debugging Makefiles))
📌 5-2. Makefile 디버깅 (Debugging Makefiles)Makefile을 작성할 때, 빌드 과정에서 예상치 못한 오류가 발생할 수 있습니다.이때 디버깅 기능을 활용하면 빌드 과정과 실행될 명령을 쉽게 추적하여 문제를 해결할 수 있습니다.특히, 다음과 같은 디버깅 기법이 유용합니다.make -n을 사용하여 실행 없이 명령만 출력 (Dry Run)make VERBOSE=1을 활용하여 자세한 명령어 출력1. make -n을 활용한 실행 시뮬레이션 (Dry Run Mode)📌 1-1. make -n의 개념make -n을 실행하면 실제 빌드를 수행하지 않고, 어떤 명령어가 실행될지 출력됩니다.Makefile을 실행하기 전에 어떤 작업이 수행될지 확인할 수 있는 디버깅 도구입니다.✅ 활용 사례..
2025.03.11 -
Makefile - 5. Makefile 최적화 및 실전 프로젝트 적용 (5-1. 효율적인 Makefile 작성법 (Writing Efficient Makefiles))
📌 5-1. 효율적인 Makefile 작성법 (Writing Efficient Makefiles)Makefile을 효율적으로 작성하면 코드 중복을 줄이고 유지보수를 쉽게 할 수 있습니다.이를 위해 공통 규칙 정리 (%.o: %.c 활용) 및 중복 제거 (define 사용) 기법을 적용합니다.1. 공통 규칙 정리 (%.o: %.c 활용)📌 1-1. %.o: %.c를 활용한 패턴 규칙 (Pattern Rules)Makefile에서 .c 파일을 컴파일하여 .o 파일로 변환하는 과정은 반복적인 작업입니다.이를 효율적으로 처리하기 위해 패턴 규칙(%.o: %.c)을 사용합니다.📌 1-2. 기본적인 %.o: %.c 규칙%.o: %.c $(CC) $(CFLAGS) -c $자동 변수설명$첫 번째 의존 파일 (.c..
2025.03.11 -
Makefile - 4. 고급 Makefile 작성 (4-3. 빌드 캐싱 및 증분 빌드 (Build Caching & Incremental Build))
📌 4-3. 빌드 캐싱 및 증분 빌드 (Build Caching & Incremental Build)빌드 속도를 최적화하는 핵심 기법 중 하나는 빌드 캐싱(Build Caching)과 증분 빌드(Incremental Build)입니다.이를 통해 변경된 파일만 다시 컴파일하여 불필요한 빌드를 방지하고, 전체 빌드 시간을 단축할 수 있습니다.대표적인 방법으로 touch를 활용한 최신 빌드 관리와 ccache를 활용한 컴파일 캐싱이 있습니다.1. 빌드 캐싱(Build Caching) 및 증분 빌드(Incremental Build)란?📌 1-1. 빌드 캐싱과 증분 빌드 개념증분 빌드(Incremental Build)변경된 파일만 다시 컴파일하고, 변경되지 않은 파일은 재사용.Makefile의 의존성(Depe..
2025.03.11