Cmake tips and tricks: Difference between revisions

From HPCWIKI
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++)가 설치되어 있어야 합니다.


== Build cmake from source<ref>https://cmake.org/download/</ref> ==
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
#If another version if cmake is installed, uninstall it. A compiler such as g++ must be installed.
# 기존 CMake 제거
sudo apt remove cmake
sudo apt remove cmake


#Install prerequisite
# 의존성 설치
sudo apt install libssl-dev
sudo apt install libssl-dev


# Download the latest archive from https://cmake.org/download/
# 최신 버전 다운로드
# Extract, build and install.
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


tar -zxvf cmake-x.yy.z.tar.gz
# 빌드 및 설치
cd cmake-x.yy.z
./bootstrap
./bootstrap
make -j $(nproc)
make -j$(nproc)
sudo make install
sudo make install
sudo ldconfig
</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 x.yy or higher is required<ref>https://stackoverflow.com/questions/49859457/how-to-reinstall-the-latest-cmake-version</ref> ==
---
 
== Examples ==
 
=== Example 1: CMake 소스 빌드 ===
 
입력:
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Install latest cmake  
sudo apt remove cmake
$apt remove cmake -y
sudo apt install libssl-dev
$pip install cmake --upgrade
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>


# Or specific version
---
sudo pip install cmake==3.22


# Find location of cmake and crate symbolic link to default /usr/bin folder
== Best Practices ==
# or add cmake location in your environment path
 
sudo ln -s /usr/local/bin/cmake /usr/bin/cmake
* '''소스 빌드''' — 최신 버전 필요 시 소스 빌드 권장
</syntaxhighlight>
* '''libssl-dev 설치''' — CMake 빌드에 필수 의존성
* '''g++ 설치''' — C/C++ 컴파일러 필수
* '''빌드 디렉토리 분리''' — out-of-source 빌드 권장
* '''Ninja 사용''' — 대규모 프로젝트에서 Make보다 빠른 빌드
 
---
 
== Limitations ==
 
* 소스 빌드는 시간이 많이 소요
* 의존성 관리 수동
* 최신 버전 유지 위해 정기적 업데이트 필요
 
---


== References ==
== 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

Template:Status

Template:TOC

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 소스 빌드 워크플로우:

  1. 의존성 설치
  2. sudo apt install libssl-dev g++
  3. CMake 소스 다운로드
  4. cmake 소스 압축 해제
  5. 빌드 디렉토리 생성
  6. mkdir build && cd build
  7. CMake 실행
  8. cmake ..
  9. 빌드
  10. make -j$(nproc)
  11. 설치
  12. 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

---