Files
ccmk/README.md
Yakumo Hokori 34f8384768
All checks were successful
Rust Cross-Compile and Release / build_and_release (push) Successful in 8m40s
更新项目结构,添加新依赖,优化交互模式和命令行参数处理
2026-01-15 16:10:18 +08:00

117 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ccmk - CMake项目生成工具
一个简单的命令行工具,用于快速生成 CMake 项目结构。
## 功能
- **交互式模式** - 无参数运行时,按提示选择配置
- **命令行模式** - 直接通过参数指定配置
- 支持 C 和 C++ 项目
- 支持可执行文件、静态库、共享库
- 自动创建项目目录结构
- 自动生成 CMakeLists.txt 和示例源代码
- 自动处理项目名中的特殊字符
## 安装
```bash
cargo install --path .
```
## 使用方法
### 交互式模式
直接运行,按提示操作:
```bash
ccmk
```
### 命令行模式
```bash
ccmk -n 项目名 -l cpp -p exe -c 17 -o ./output
```
### 参数说明
| 参数 | 简写 | 说明 | 默认值 |
|------|------|------|--------|
| `--name` | `-n` | 项目名称 | 交互式必填 |
| `--lang` | `-l` | 语言: `c``cpp` | `cpp` |
| `--project-type` | `-p` | 类型: `exe`, `static-lib`, `shared-lib` | `exe` |
| `--cxx-standard` | `-c` | C++ 标准: `11`, `14`, `17`, `20`, `23` | `17` |
| `--output` | `-o` | 输出目录 | 当前目录 |
| `--force` | - | 强制覆盖已存在的目录 | - |
### 使用示例
```bash
# 创建 C++ 可执行项目
ccmk -n myapp -l cpp -p exe
# 创建 C 静态库
ccmk -n mylib -l c -p static-lib
# 创建 C++ 共享库,使用 C++20 标准
ccmk -n mylib -l cpp -p shared-lib -c 20
# 指定输出目录
ccmk -n myproject -o /path/to/output
# 覆盖已存在的目录
ccmk -n myproject --force
```
## 生成的项目结构
### 可执行文件
```
项目名/
├── CMakeLists.txt
├── include/
└── src/
└── main.c 或 main.cpp
```
### 库类型 (static-lib / shared-lib)
```
项目名/
├── CMakeLists.txt
├── include/
├── src/
│ └── main.c 或 main.cpp
└── README.md
```
## 示例
### 交互式模式
```
$ ccmk
请输入项目名称My Project
请选择编程语言C++
请选择项目类型Shared Library
请选择C++标准版本17
项目已成功创建!
📁 项目结构:
- MyProject/
├── CMakeLists.txt
├── include/
├── src/
│ └── main.cpp
└── README.md
```
## 注意事项
- 项目名中的特殊字符会被自动移除(仅保留字母、数字、下划线、连字符)
- 如果清理后的项目名为空,会使用默认名称 `cmake_project`
- 库类型项目会自动生成 `GNUInstallDirs` 安装配置
- CMakeLists.txt 使用 CMake 3.20 作为最低版本要求