ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Qt+CMake 环境搭建:在 VSCode/Cursor/Trae 中配 TaoToken 的 settings.json 骨架

Qt+CMake 环境搭建:在 VSCode/Cursor/Trae 中配 TaoToken 的 settings.json 骨架 1. 为什么 QtCMake 要搬到 VSCode/Cursor/Trae 里写QtCreator 的补全和调试其实够用但 AI 辅助编码这块确实落后了。VSCode、Cursor、Trae 这类编辑器现在都能直接对话式改代码、生成 CMake 片段、解释 Qt 信号槽效率差距在写业务逻辑时特别明显。问题在于Qt 的编译链是 CMake 特定工具链MinGW 或 MSVC而 AI 补全需要模型服务这两件事得同时跑通否则你会在「代码能编译但 AI 不响应」和「AI 能补全但 CMake 找不到 Qt」之间反复横跳。这篇要解决的就是这个组合场景用 CMake 管 Qt 项目在三款编辑器里共用一套 settings.json 骨架把模型接入统一到 TaoToken 的 Key 上。适合已经装好 Qt、会用 CMake 基本命令、但被多编辑器配置割裂困扰的开发者。下面所有路径和配置我都实测过Windows 下 Qt 6.9 llvm-mingw 为例macOS/Linux 只需替换路径分隔符和工具链名。核心检索词先明确QtCMake 环境搭建、VSCode/Cursor/Trae 配置、settings.json 骨架、TaoToken 接入。你跟着做最后能拿到一个编译通过、AI 补全也能用的工程。2. TaoToken 前置一把 Key 打通三款编辑器TaoToken 在这里的角色是统一模型入口。三款编辑器如果各自配一套模型地址和 Key切换时容易乱用同一个 Key 和 API 地址settings.json 骨架就能复用。先去官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册然后在控制台创建 API Key。创建 Key 的入口在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 点「API Keys」新建复制出来形如sk-xxxx的字符串。API 基础地址用 https://taotoken.net/api 注意这个地址不带任何查询参数直接填在配置里。注意Key 只显示一次建议先存到密码管理器。不要写进会提交到 Git 的 settings.json后面我会用环境变量或本地用户配置隔离。如果你只是先验证模型能不能通可以打开模型对话页 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 发一条消息确认 Key 有效再往下配。长期做 Qt 编码和 Agent 辅助的可以看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 额度模型更适合日常高频补全。3. 可复制配置settings.json 骨架与 CMakeLists.txt3.1 三款编辑器共用的 settings.json 骨架VSCode、Cursor、Trae 都兼容 VSCode 的 settings.json 结构所以骨架可以共用。区别只在用户配置目录VSCode 是%APPDATA%\Code\User\settings.jsonCursor 是%APPDATA%\Cursor\User\settings.jsonTrae 是%APPDATA%\Trae\User\settings.json。把下面内容粘进去路径按你实际 Qt 安装位置改。{ cmake.cmakePath: cmake, cmake.configureOnOpen: true, cmake.generator: Ninja, cmake.buildDirectory: ${workspaceFolder}/build, cmake.configureArgs: [ -DCMAKE_PREFIX_PATHC:/dev/tools/qt/6.9/6.9.1/llvm-mingw_64 ], C_Cpp.default.compilerPath: C:/dev/tools/qt/6.9/6.9.1/llvm-mingw_64/bin/clang.exe, C_Cpp.default.cppStandard: c20, C_Cpp.default.intelliSenseMode: windows-clang-x64, clangd.path: C:/dev/tools/qt/6.9/Tools/llvm-mingw1706_64/bin/clangd.exe, clangd.arguments: [ --compile-commands-dir${workspaceFolder}/build, --background-index, --clang-tidy ], editor.formatOnSave: true, ai.modelProvider: openai-compatible, ai.baseUrl: https://taotoken.net/api, ai.apiKey: ${env:TAOTOKEN_API_KEY}, ai.model: claude-sonnet-4-5 }最后四行是 AI 接入部分。不同编辑器对自定义模型字段名可能不同VSCode 系插件一般读ai.*或插件自己的命名空间如果插件不认就在插件设置里手动填 baseUrl 和 Key。关键是baseUrl用https://taotoken.net/apiKey 用环境变量TAOTOKEN_API_KEY避免明文。设置环境变量Windows PowerShell永久[Environment]::SetEnvironmentVariable(TAOTOKEN_API_KEY, sk-你的Key, User)设置完重启编辑器让环境变量生效。3.2 CMakeLists.txtQt6 组件与自动 mocQt 项目必须开 AUTOMOC/AUTOUIC/AUTORCC否则信号槽和 ui 文件不会生成。下面这份可以直接用注意find_package的组件按需增减。cmake_minimum_required(VERSION 3.16) project(qt_cmake_demo LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 输出目录分离方便调试 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/debug/bin) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/debug/lib) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/debug/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/release/bin) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/release/lib) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/release/lib) # Qt 自动化工具 set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets )main.cpp用一个最小 Qt 窗口验证#include QApplication #include QMainWindow #include QPushButton int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; window.resize(800, 600); QPushButton button(window); button.setText(click); button.move(window.width() / 2 - button.width() / 2, window.height() / 2 - button.height() / 2); window.show(); return app.exec(); }3.3 工具链选择clangd 还是 C/C 插件Trae 和 Cursor 目前对 C/C 官方插件支持不如 VSCode 完整用 clangd 更稳。clangd 依赖compile_commands.json所以 CMake 配置时要加-DCMAKE_EXPORT_COMPILE_COMMANDSON。在 settings.json 的cmake.configureArgs里补上这一项cmake.configureArgs: [ -DCMAKE_PREFIX_PATHC:/dev/tools/qt/6.9/6.9.1/llvm-mingw_64, -DCMAKE_EXPORT_COMPILE_COMMANDSON ]配置后build/下会生成compile_commands.jsonclangd 靠它做跳转和补全。如果 clangd 报找不到 Qt 头文件检查CMAKE_PREFIX_PATH是否指向 Qt 的llvm-mingw_64目录而不是 Tools 目录。4. 验证请求编译与 AI 补全同时跑通4.1 命令行验证 CMake 配置先不依赖编辑器在项目根目录手动跑一遍确认工具链没问题cmake -B build -S . -G Ninja ^ -DCMAKE_PREFIX_PATHC:/dev/tools/qt/6.9/6.9.1/llvm-mingw_64 ^ -DCMAKE_EXPORT_COMPILE_COMMANDSON cmake --build build --config Debug成功的话build/debug/bin/qt_cmake_demo.exe会生成双击能看到窗口和按钮。如果这一步失败编辑器里再怎么配也没用先解决命令行。4.2 编辑器内验证 CMake Tools打开项目后VSCode/Cursor/Trae 底部状态栏会出现 CMake Tools 的 kit 选择。点「Select a Kit」选Clang 17.0.6 llvm-mingw这类对应你 Qt 工具链的项。然后按CtrlShiftP运行CMake: Configure再CMake: Build。输出面板看到[build] Build finished with exit code 0即编译通过。4.3 验证 AI 补全是否走 TaoToken在main.cpp里敲QPushButton看是否有补全提示再选中一段代码用编辑器的 AI 对话问「解释这段 Qt 信号槽」能返回内容说明模型通了。如果 AI 无响应先检查环境变量是否被编辑器读到在编辑器内置终端执行echo $env:TAOTOKEN_API_KEYPowerShell能打印出 Key 才说明环境变量生效。提示部分编辑器需要重启才能读取新环境变量改完记得完全退出再打开。5. 本篇常见错排查报错一Could not find a package configuration file provided by Qt6原因CMAKE_PREFIX_PATH没指对。解决确认路径到llvm-mingw_64这一层里面应有lib/cmake/Qt6。用dir C:\dev\tools\qt\6.9\6.9.1\llvm-mingw_64\lib\cmake\Qt6检查。报错二clangd 一直 indexing跳转失效原因compile_commands.json没生成或路径不对。解决确认 CMake 配置时带了-DCMAKE_EXPORT_COMPILE_COMMANDSON且clangd.arguments里--compile-commands-dir指向build目录。报错三AI 补全返回 401 或超时原因Key 没读到或 baseUrl 写错。解决baseUrl 必须是https://taotoken.net/api不要带多余路径Key 用环境变量方式注入别直接写死在会提交的文件里。可以先用模型对话页 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 验证 Key 本身有效。报错四Ninja 找不到原因没装 Ninja 或不在 PATH。解决winget install Ninja-build.Ninja或把 generator 改成MinGW Makefiles但 Ninja 增量编译更快建议装上。报错五Trae 里 CMake Tools 不显示状态栏原因插件没装或工作区没识别为 CMake 项目。解决确认根目录有CMakeLists.txt装CMake Tools插件后重载窗口。6. 统一 Key 接入的后续动作三款编辑器共用一套 settings.json 骨架后切换成本基本为零。Key 管理集中在 TaoToken 控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 需要新建或轮换时去 API Keys 页面操作接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 有各语言示例。如果你主要做长期 Qt 编码和 Agent 辅助Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 的额度模型比按次调用更划算。最后留一个实用习惯把build/和compile_commands.json加进.gitignoresettings.json 里的 Key 永远走环境变量。这样换机器时只需重设一次TAOTOKEN_API_KEY三款编辑器都能直接跑。
返回列表