# TOC

**CMake 소개**

* CMake의 역사와 목적
* CMake의 기본 개념
* CMake의 설치 및 설정 방법

**CMakeLists.txt의 기본 구조**

* 프로젝트 정의
* 최소 요구 CMake 버전 설정
* 기본 명령어와 구조

**변수와 리스트**

* 변수 선언 및 사용
* 리스트 변수 사용 방법
* 내장 변수 소개

**소스 파일 및 타겟 설정**

* 소스 파일 추가
* 타겟 생성
* 타겟 속성 설정

**빌드 설정**

* 빌드 타입 설정
* 컴파일러 옵션 설정
* 링커 옵션 설정

**조건부 컴파일**

* 조건문 사용
* 플래그에 따른 컴파일 설정
* 플랫폼 별 컴파일 설정
* 빌드 타입에 따른 설정

**외부 라이브러리 및 종속성 관리**

* find\_package() 사용법
* 외부 라이브러리 추가
* 타겟 링크 설정

**사용자 정의 함수와 매크로**

* 함수 정의 및 호출
* 매크로 정의 및 활용
* 재사용 가능한 CMake 코드 작성

**모듈과 패키지**

* CMake 모듈 사용법
* 사용자 정의 모듈 작성
* 패키지 구성 및 배포

**CTest와 CPack**

* CTest를 이용한 테스트 자동화
* CPack을 이용한 패키징
* 빌드 시스템과의 통합

**고급 CMake 주제**

* Cross-compiling(크로스 컴파일)
* Toolchain 파일 사용법
* 복잡한 빌드 환경 설정

**CMakeLists.txt 작성 모범 사례**

* 유지보수성을 위한 구조화 방법
* 효율적인 빌드 설정 관리
* 협업을 위한 CMake 코드 작성법

**실제 프로젝트 예제**

* 간단한 C/C++ 프로젝트 설정
* 복잡한 프로젝트의 CMakeLists.txt 분석
* 다양한 플랫폼 및 환경에서의 빌드 예제

**트러블슈팅 및 문제 해결**

* 일반적인 오류와 해결 방법
* 디버깅 및 로그 활용
* CMake 버그와 대응 방법

**CMake 최신 기능과 업데이트**

* 최근 버전의 주요 기능
* CMake 커뮤니티와의 연계
* 앞으로의 CMake 발전 방향

**관련 자료 및 부록**

* CMake 명령어 참조
* 유용한 링크와 자료
* 부록: 샘플 CMakeLists.txt
