虾哥 8616776a24 v1.1.4: 修复拖拽 JSON 文件打开工程功能
【Bug 修复】
- setAcceptDrops(true) —— 之前从未设置,导致所有拖拽事件直接被 Qt 忽略
- 新增 dragMoveEvent 覆写 —— 拖拽移动过程也要 accept,否则 dropEvent 不会触发
- 禁用所有子控件的拖拽接收 —— QTreeWidget/QListWidget/QLineEdit
  等默认接受拖拽,会先拦截事件导致 MainWindow 收不到
- 同时对 viewport() 禁用拖拽,防止内部滚动区域拦截
2026-04-28 19:03:49 +08:00
2026-04-28 18:53:57 +08:00
2026-04-28 18:53:57 +08:00

VoiletCStudio - 紫罗兰 C 工具箱

Qt5 跨平台 C 工程配置器,自动生成 CMakeLists.txt

版本v1.1 · 2026-04-28


🚀 功能特性

1. 工程配置管理

  • JSON 格式配置文件
  • 新建/打开/保存工程
  • 拖拽 JSON 文件打开
  • Ctrl+S 快速保存

2. 编译工具链配置

  • 编译器路径选择
  • 汇编器路径选择
  • 链接器路径选择
  • 支持 MinGW / GCC / Clang
  • Windows 下自动识别 MinGW 工具链

3. 文件管理

  • 虚拟目录(类似 MDK
  • .c 源文件分类管理
  • .h 包含目录管理
  • 库文件管理(.a/.so/.lib

4. 编译配置

  • 编译宏定义
  • 自定义编译选项
  • Debug / Release 模式

5. CMake 生成

  • 自动生成 CMakeLists.txt
  • 编译器路径在 project() 之前设置,避免默认回退到 NMake
  • Windows 下自动指定 -G "MinGW Makefiles" 生成器
  • 内置一键编译Debug / Release

📋 使用方法

编译 VoiletCStudio

Linux

cd VoiletCStudio
qmake
make

Windows (MSYS2/MinGW)

cd VoiletCStudio
qmake
mingw32-make

运行

./VoiletCStudio         # Linux
VoiletCStudio.exe       # Windows

使用流程

  1. 新建工程 → 输入工程名
  2. 配置编译器路径Windows 选 gcc.exe
  3. 添加虚拟目录和 .c 源文件
  4. 添加包含目录和库文件
  5. 添加编译宏和选项
  6. 保存工程JSON
  7. 点击「生成 CMake」→ 自动生成 CMakeLists.txt
  8. 点击「编译 Debug / Release」→ 一键编译

🛠️ CMake 使用

# Linux / macOS
cmake -B build
make debug       # 编译 Debug
make release     # 编译 Release

# Windows (MinGW)
cmake -G "MinGW Makefiles" -B build
mingw32-make debug
mingw32-make release

📁 项目结构

VoiletCStudio/
├── src/
│   ├── main.cpp             # 主程序入口
│   ├── mainwindow.cpp/h     # 主窗口(含编译流程)
│   ├── projectconfig.cpp/h  # 配置管理
│   └── cmakegenerator.cpp/h # CMake 生成
├── VoiletCStudio.pro        # Qt 项目文件
├── README.md                # 说明文档
└── 需求规格说明书.md         # 详细需求文档

💻 跨平台支持

平台 编译器 生成器 状态
Windows MinGW (MSYS2) MinGW Makefiles
Windows MSVC NMake ⚠️ 未测试
Linux GCC Unix Makefiles
macOS Clang Unix Makefiles

Windows 特别注意

  • 必须安装 MSYS2 并安装 mingw-w64-gccmingw-w64-cmake
  • 编译器路径示例:C:/msys2/mingw64/bin/gcc.exe
  • CMake 生成时程序自动使用 -G "MinGW Makefiles"
  • 构建时使用 mingw32-make 而非 make

📝 配置文件格式

{
    "projectName": "MyProject",
    "projectPath": "/path/to/project",
    "outputDir": "./build",
    "compilerPath": "/usr/bin/gcc",
    "assemblerPath": "/usr/bin/gcc",
    "linkerPath": "/usr/bin/gcc",
    "virtualDirs": {
        "App": {
            "name": "App",
            "files": ["src/main.c"]
        }
    },
    "includeDirs": ["./include"],
    "libraries": ["libmylib.a"],
    "defines": ["DEBUG"],
    "compilerOptions": ["-Wall"]
}

🔧 技术要点

编译器设置顺序

CMakeLists.txt 中 CMAKE_C_COMPILER 必须在 project() 之前设置,否则 CMake 会在 project() 时自动检测编译器并可能回退到不存在的 NMake。

Windows 生成器

程序通过 #ifdef Q_OS_WIN32 编译期检测平台,在 Windows 上自动:

  • CMake 添加 -G "MinGW Makefiles" 参数
  • 构建时使用 mingw32-make 替代 make
  • 自动从编译器路径推导 CMAKE_MAKE_PROGRAM

🎯 特色

  • 类 MDK 虚拟目录:像 Keil MDK 一样管理源文件
  • 一键生成 CMake:自动生成完整的 CMakeLists.txt
  • 真正跨平台Windows (MinGW) / Linux / macOS 全支持,自动化平台适配
  • 轻量级:纯 Qt5 实现,无额外依赖

📄 许可证

MIT License


作者:虾哥
日期2026-04-09 · 更新2026-04-28

Description
VoiletCStudio
Readme 508 KiB
Languages
C++ 73.2%
C 18.6%
Shell 3.9%
NSIS 3.6%
QMake 0.7%