refactor: adopt layered C++ project layout

This commit is contained in:
2025-09-23 14:03:16 +08:00
parent b5ccc595e0
commit b74681a0f5
6 changed files with 95 additions and 27 deletions

View File

@@ -3,12 +3,22 @@
這個專案提供一個簡單的 C++ 樣板包含基本的目錄結構、Makefile 與開發輔助工具,方便快速開始新專案。
## 目錄結構
- `src/`: 主要的 C++ 原始碼,目前包含 `main.cpp`
- `build/`: 由 Makefile 自動建立,用來存放編譯後的物件檔。
- `utils/`: 收錄常用腳本,例如編譯、執行、清理、格式化與 clang-tidy。
- `.clang-format`: 定義 clang-format 的專案格式規則。
- `.clang-tidy`: 定義 clang-tidy 的檢查設定。
- `Makefile`: 管理編譯、執行、清理、格式化與靜態分析等命令。
```text
.
├── include/
│ └── project/
│ └── sample_library.hpp # 對外公開的標頭
├── src/
│ ├── app/
│ │ └── main.cpp # 可執行程式進入點
│ └── lib/
│ └── sample_library.cpp # 函式庫實作
├── utils/ # Shell 腳本工具
├── build/ # make 時產生,存放物件檔
├── .clang-format
├── .clang-tidy
└── Makefile
```
## 建置與執行
若系統已安裝 `g++`,可使用以下命令:
@@ -65,11 +75,14 @@ CXX=clang++ CXXFLAGS="-std=c++20 -O3" make
- 4 空格縮排,最大列寬 100
- 自訂括號換行與 namespace 縮排規則
## 範例程式碼
`include/project/sample_library.hpp``src/lib/sample_library.cpp` 呈現一個簡單的 `project::Greeter` 類別與 `generate_sequence` 函式,`.hpp` 只放宣告、`.cpp` 負責實作,示範「公開標頭放在 include/,實作放在 src/」的常見結構。`src/app/main.cpp` 會引入該標頭並呼叫它們,執行 `make run` 即可看到輸出。如果要建立自己的模組,可依此模式建立額外的標頭與來源檔,並依需求放在 `src/lib/``src/app/` 或新的子資料夾。
## 靜態分析
`.clang-tidy` 啟用了一些常用的檢查(`bugprone-*``clang-analyzer-*``modernize-*` 等)。可使用 `make tidy``CLANG_TIDY=/path/to/clang-tidy make tidy``src/*.cpp` 逐一檢查;若要檢查特定檔案,可執行:
```bash
clang-tidy src/main.cpp --
clang-tidy src/app/main.cpp -- -Iinclude
```
可視需求調整 `Checks``HeaderFilterRegex` 或其他設定來符合專案需求。