Skip to content

Commit 1cbdac5

Browse files
authored
Create README.ko.md
1 parent f820687 commit 1cbdac5

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed

README.ko.md

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
2+
# LLVM/Clang Demo Project
3+
4+
- > [English README](README.md)
5+
6+
- 본 프로젝트는 **`LLVM`/`Clang` 기반 `C++` 컴파일 환경**, **`VSCode` 개발 설정**, **`C++20~26` 최신 기능을 활용한 예제 코드** 를 포함한 최소/완성형 템플릿입니다.
7+
- `Windows`·`Linux` 에서 공통적으로 동일한 구조로 사용하도록 설계되었습니다.
8+
9+
<br />
10+
11+
---
12+
13+
## 1. 프로젝트 구성 개요
14+
15+
- 이 프로젝트는 다음을 포함합니다:
16+
- **`CMake` 기반 빌드 시스템**
17+
- **`clang` / `clang++` 강제 사용 설정**
18+
- **`C++26` 컴파일 활성화**
19+
- **`LLD` 링크 사용(`-fuse-ld=lld`)**
20+
- **`VSCode` 개발 환경 설정 (`IntelliSense`, `clangd`, `LLDB DAP`)**
21+
- **`C++20`/`23`/`26` 기능을 사용한 예제 코드(`main.cpp`)**
22+
23+
<br />
24+
25+
---
26+
27+
## 2. 주요 파일 설명
28+
29+
### 2.1 `CMakeLists.txt`
30+
31+
- `LLVM_HOME` 환경 변수를 우선 적용
32+
- `Windows` 환경에서 자동으로 `C:/llvm-package` 사용
33+
- `clang`, `clang++`을 강제 `CMAKE_C_COMPILER` / `CMAKE_CXX_COMPILER`로 설정
34+
- `LLD` 링크 사용 (`-fuse-ld=lld`)
35+
- `C++26` 컴파일 활성화 (`target_compile_features(... cxx_std_26)`)
36+
- `compile_commands.json` 자동 생성
37+
38+
<br />
39+
40+
**VSCode + clangd 사용자의 기본 구조로 매우 이상적입니다.**
41+
42+
<br />
43+
44+
---
45+
46+
### 2.2 예제 (`main.cpp`)
47+
48+
* `C++20` `ranges` / `views` / `std::format`
49+
* `C++23` `std::expected`
50+
* `C++26` `deducing this` 문법 적용 (`Point::move`)
51+
* 고급 예제 포함(필터링·변환·`join view`·구조화된 메시지 생성 등)
52+
53+
<br />
54+
55+
- 이 파일 하나만으로 **`C++20~26` 기능의 실제 실행 예제** 를 모두 확인할 수 있습니다.
56+
57+
<br />
58+
59+
---
60+
61+
### 2.3 `VSCode` 설정 파일
62+
63+
#### 2.3.1 `c_cpp_properties.json`
64+
65+
- `IntelliSense` 엔진을 `clang` 기반으로 설정
66+
- `compile_commands.json`을 자동 참고
67+
- `includePath` 기본 설정
68+
69+
#### 2.3.2 extensions.json
70+
71+
- 다음 확장 자동 추천
72+
- `ms-vscode.cmake-tools`
73+
- `ms-vscode.cpptools`
74+
- `llvm-vs-code-extensions.vscode-clangd`
75+
76+
#### 2.3.3 `launch.json`
77+
78+
- **`LLDB-DAP` 기반 디버깅 설정**
79+
- `OS`별 실행 파일 자동 분기 (`Windows``hello.exe`)
80+
81+
#### 2.3.4 `settings.json`
82+
83+
- `CMake generator = Ninja`
84+
- `clang++``IntelliSense` 기본 컴파일러로 설정
85+
- `editor.formatOnSave` 옵션
86+
87+
#### 2.3.5 `tasks.json`
88+
89+
- `CMake Configure`
90+
- `CMake Build`
91+
- `VSCode` 빌드 자동화 구성
92+
93+
<br />
94+
95+
---
96+
97+
## 3. 빌드 및 실행 방법
98+
99+
### 3.1 `Windows` / `Linux` 공통
100+
101+
```bash
102+
cmake -S . -B build -G Ninja
103+
cmake --build build --config Debug
104+
```
105+
106+
### 3.2 실행
107+
108+
#### `Linux`
109+
110+
```bash
111+
./build/hello
112+
```
113+
114+
#### Windows
115+
116+
```powershell
117+
.\build\hello.exe
118+
```
119+
120+
<br />
121+
122+
---
123+
124+
## 4. 디버깅 (`VSCode`)
125+
126+
- (1) **확장 설치**
127+
- `ms-vscode.cmake-tools`
128+
- `llvm-vs-code-extensions.vscode-clangd`
129+
- `llvm-vs-code-extensions.lldb-dap`
130+
131+
- (2) `VSCode` 왼쪽 실행/디버그 메뉴 → **Debug (lldb-dap)** 실행
132+
133+
<br />
134+
135+
---
136+
137+
## 5. `C++` 예제 코드 특징
138+
139+
* **C++20 / C++23 / C++26 주요 신기능 실제 실행 가능**
140+
* `ranges`, `views`, `format`, `expected` 모두 포함
141+
* "`deducing this`" 문법을 사용한 연산자 체이닝 스타일 사용
142+
* 예제 메시지를 스트링으로 조립하여 `main`에서 출력
143+
144+
<br />
145+
146+
---
147+
148+
## 6. 프로젝트 구조
149+
150+
```
151+
project_root/
152+
│ CMakeLists.txt
153+
│ main.cpp
154+
155+
├─ .vscode/
156+
│ ├─ c_cpp_properties.json
157+
│ ├─ extensions.json
158+
│ ├─ launch.json
159+
│ ├─ settings.json
160+
│ └─ tasks.json
161+
162+
└─ build/ (cmake가 생성)
163+
```
164+
165+
<br />
166+
167+
---
168+
169+
## 7. 이 템플릿의 사용처
170+
171+
- `LLVM`/`Clang` 개발 환경 테스트
172+
- 최신 `C++` 표준(`C++20~C++26`) 실험
173+
- `VSCode` + `clangd` + `LLDB` 기반 `C++` 프로젝트 기본 구조
174+
- `CMake` 기반 멀티플랫폼 템플릿
175+
176+
<br />
177+
178+
---
179+
180+
## 8. 라이선스
181+
182+
- MIT
183+

0 commit comments

Comments
 (0)