Cmake tips and tricks: Difference between revisions
Jump to navigation
Jump to search
(Add categories: Linux, Reference) |
(Phase 6.1: LLM-Optimized Wiki Template 적용) |
||
| Line 1: | Line 1: | ||
{{Status | |||
|status=Draft | |||
|owner=Knowledge Agent | |||
|last_update=2026-07-16 | |||
|review=Pending | |||
}} | |||
{{TOC}} | |||
== Overview == | |||
CMake는 오픈소스 크로스 플랫폼 빌드 시스템 자동화 도구입니다. 소스 코드와 컴파일러를 독립적으로 관리하며, 빌드 파일을 생성합니다. | |||
=== Summary === | |||
* 무엇인가? 크로스 플랫폼 빌드 시스템 자동화 도구 | |||
* 왜 필요한가? 복잡한 빌드 의존성 관리, 다중 플랫폼 지원 | |||
* 언제 사용하는가? C/C++ 프로젝트 빌드, 다중 플랫폼 개발 | |||
--- | |||
== Purpose == | |||
이 문서가 존재하는 이유 | |||
* Goal: CMake 소스 빌드 방법, 설치 가이드 제공 | |||
* Scope: CMake 소스 컴파일, 의존성 설치 | |||
* Non-goals: CMakeLists.txt 작성법, CMake 모듈 상세 | |||
--- | |||
== Key Concepts == | |||
{| class="wikitable" | |||
! 개념 | |||
! 설명 | |||
! Related | |||
|- | |||
| CMake | |||
| 크로스 플랫폼 빌드 시스템 자동화 도구 | |||
| [[Linux]] | |||
|- | |||
| CMakeLists.txt | |||
| CMake 빌드 설정 파일 | |||
| [[Cmake tips and tricks]] | |||
|- | |||
| Make/Ninja | |||
| CMake가 생성하는 빌드 시스템 | |||
| [[Cmake tips and tricks]] | |||
|- | |||
| libssl-dev | |||
| OpenSSL 개발 라이브러리 | |||
| [[Cmake tips and tricks]] | |||
|} | |||
--- | |||
== Architecture == | |||
CMake 빌드 프로세스: | |||
<syntaxhighlight lang="mermaid"> | |||
graph TD | |||
A[CMakeLists.txt] --> B[CMake 설정] | |||
B --> C[Makefile/Ninja 파일 생성] | |||
C --> D[빌드 실행] | |||
D --> E[실행 파일/라이브러리] | |||
</syntaxhighlight> | |||
--- | |||
== Workflow == | |||
CMake 소스 빌드 워크플로우: | |||
# 의존성 설치 | |||
# sudo apt install libssl-dev g++ | |||
# CMake 소스 다운로드 | |||
# cmake 소스 압축 해제 | |||
# 빌드 디렉토리 생성 | |||
# mkdir build && cd build | |||
# CMake 실행 | |||
# cmake .. | |||
# 빌드 | |||
# make -j$(nproc) | |||
# 설치 | |||
# sudo make install | |||
--- | |||
== Detailed Explanation == | |||
=== CMake 소스 빌드 === | |||
다른 버전의 CMake가 설치되어 있으면 먼저 제거합니다. 컴파일러(g++)가 설치되어 있어야 합니다. | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# | # 기존 CMake 제거 | ||
sudo apt remove cmake | sudo apt remove cmake | ||
# | # 의존성 설치 | ||
sudo apt install libssl-dev | sudo apt install libssl-dev | ||
# | # 최신 버전 다운로드 | ||
wget https://cmake.org/files/v3.28/cmake-3.28.0.tar.gz | |||
tar -xzf cmake-3.28.0.tar.gz | |||
cd cmake-3.28.0 | |||
# 빌드 및 설치 | |||
./bootstrap | ./bootstrap | ||
make -j $(nproc) | make -j$(nproc) | ||
sudo make install | sudo make install | ||
</syntaxhighlight> | |||
--- | |||
== Configuration == | |||
=== CMake 빌드 옵션 === | |||
<syntaxhighlight lang="bash"> | |||
# 빌드 디렉토리 생성 | |||
mkdir build && cd build | |||
# CMake 설정 | |||
cmake .. | |||
# 특정 빌드 시스템 사용 | |||
cmake -G "Ninja" .. | |||
# 컴파일러 지정 | |||
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .. | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== CMake | --- | ||
== Examples == | |||
=== Example 1: CMake 소스 빌드 === | |||
입력: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo apt remove cmake | |||
sudo apt install libssl-dev | |||
wget https://cmake.org/files/v3.28/cmake-3.28.0.tar.gz | |||
tar -xzf cmake-3.28.0.tar.gz | |||
cd cmake-3.28.0 | |||
./bootstrap | |||
make -j$(nproc) | |||
sudo make install | |||
</syntaxhighlight> | |||
--- | |||
== Best Practices == | |||
* '''소스 빌드''' — 최신 버전 필요 시 소스 빌드 권장 | |||
* '''libssl-dev 설치''' — CMake 빌드에 필수 의존성 | |||
* '''g++ 설치''' — C/C++ 컴파일러 필수 | |||
* '''빌드 디렉토리 분리''' — out-of-source 빌드 권장 | |||
* '''Ninja 사용''' — 대규모 프로젝트에서 Make보다 빠른 빌드 | |||
--- | |||
== Limitations == | |||
* 소스 빌드는 시간이 많이 소요 | |||
* 의존성 관리 수동 | |||
* 최신 버전 유지 위해 정기적 업데이트 필요 | |||
--- | |||
== References == | == References == | ||
* https://cmake.org/download/ | |||
--- | |||
== Related Pages == | |||
* [[Compile tips and tricks]] | |||
* [[Bazel]] | |||
* [[Linux]] | |||
* [[Cmake]] | |||
--- | |||
[[Category:Linux]] | [[Category:Linux]] | ||
[[Category:Reference]] | [[Category:Reference]] | ||
Revision as of 14:38, 16 July 2026
Overview
CMake는 오픈소스 크로스 플랫폼 빌드 시스템 자동화 도구입니다. 소스 코드와 컴파일러를 독립적으로 관리하며, 빌드 파일을 생성합니다.
Summary
- 무엇인가? 크로스 플랫폼 빌드 시스템 자동화 도구
- 왜 필요한가? 복잡한 빌드 의존성 관리, 다중 플랫폼 지원
- 언제 사용하는가? C/C++ 프로젝트 빌드, 다중 플랫폼 개발
---
Purpose
이 문서가 존재하는 이유
- Goal: CMake 소스 빌드 방법, 설치 가이드 제공
- Scope: CMake 소스 컴파일, 의존성 설치
- Non-goals: CMakeLists.txt 작성법, CMake 모듈 상세
---
Key Concepts
| 개념 | 설명 | Related |
|---|---|---|
| CMake | 크로스 플랫폼 빌드 시스템 자동화 도구 | Linux |
| CMakeLists.txt | CMake 빌드 설정 파일 | Cmake tips and tricks |
| Make/Ninja | CMake가 생성하는 빌드 시스템 | Cmake tips and tricks |
| libssl-dev | OpenSSL 개발 라이브러리 | Cmake tips and tricks |
---
Architecture
CMake 빌드 프로세스:
graph TD
A[CMakeLists.txt] --> B[CMake 설정]
B --> C[Makefile/Ninja 파일 생성]
C --> D[빌드 실행]
D --> E[실행 파일/라이브러리]---
Workflow
CMake 소스 빌드 워크플로우:
- 의존성 설치
- sudo apt install libssl-dev g++
- CMake 소스 다운로드
- cmake 소스 압축 해제
- 빌드 디렉토리 생성
- mkdir build && cd build
- CMake 실행
- cmake ..
- 빌드
- make -j$(nproc)
- 설치
- sudo make install
---
Detailed Explanation
CMake 소스 빌드
다른 버전의 CMake가 설치되어 있으면 먼저 제거합니다. 컴파일러(g++)가 설치되어 있어야 합니다.
# 기존 CMake 제거
sudo apt remove cmake
# 의존성 설치
sudo apt install libssl-dev
# 최신 버전 다운로드
wget https://cmake.org/files/v3.28/cmake-3.28.0.tar.gz
tar -xzf cmake-3.28.0.tar.gz
cd cmake-3.28.0
# 빌드 및 설치
./bootstrap
make -j$(nproc)
sudo make install
---
Configuration
CMake 빌드 옵션
# 빌드 디렉토리 생성
mkdir build && cd build
# CMake 설정
cmake ..
# 특정 빌드 시스템 사용
cmake -G "Ninja" ..
# 컴파일러 지정
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
---
Examples
Example 1: CMake 소스 빌드
입력:
sudo apt remove cmake
sudo apt install libssl-dev
wget https://cmake.org/files/v3.28/cmake-3.28.0.tar.gz
tar -xzf cmake-3.28.0.tar.gz
cd cmake-3.28.0
./bootstrap
make -j$(nproc)
sudo make install
---
Best Practices
- 소스 빌드 — 최신 버전 필요 시 소스 빌드 권장
- libssl-dev 설치 — CMake 빌드에 필수 의존성
- g++ 설치 — C/C++ 컴파일러 필수
- 빌드 디렉토리 분리 — out-of-source 빌드 권장
- Ninja 사용 — 대규모 프로젝트에서 Make보다 빠른 빌드
---
Limitations
- 소스 빌드는 시간이 많이 소요
- 의존성 관리 수동
- 최신 버전 유지 위해 정기적 업데이트 필요
---
References
---
Related Pages
---