refactor: adopt layered C++ project layout
This commit is contained in:
27
README.md
27
README.md
@@ -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` 或其他設定來符合專案需求。
|
||||
|
Reference in New Issue
Block a user