Kit选不对会导致configure卡在“No CMAKE_CXX_COMPILER could be found”;需通过CMake: Select a Kit选择正确编译器,确保Scan for kits成功识别g++/clang++/MSVC,并配合target_include_directories、compile_commands.json及动态launch路径等配置保障IntelliSense与调试正常。

Kit 选不对,configure 就会卡在 “No CMAKE_CXX_COMPILER could be found”
VSCode 能调用 g++ --version 或 clang++ --version,不代表 CMake Tools 就能自动识别编译器。真正常见原因是 kit 没选对,或压根没扫描出来。
- 按
Ctrl+Shift+P输入CMake: Select a Kit,看列表里有没有带g++、clang++或Visual Studio字样的选项;没有?先点Scan for kits - Windows 用户若用 MSVC,必须装 Build Tools for Visual Studio(不是完整 VS),且勾选
Desktop development with C++工作负载 - Linux/macOS 用户确认已装
build-essential(Ubuntu)或执行xcode-select --install(macOS),否则Scan for kits会跳过 - kit 列表为空但编译器明明存在?检查 VSCode 是否从桌面图标直接启动——此时 shell 环境可能没加载
~/.local/bin或/usr/local/bin;改用终端执行code .启动
头文件标红、跳转失效,别改 c_cpp_properties.json
大型项目里 #include "xxx.h" 标红、Go to Definition 失效,90% 不是路径写错,而是 IntelliSense 没同步 CMake 的真实 include 逻辑。
- 在
CMakeLists.txt中用target_include_directories(my_target PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)显式声明,而不是手动往c_cpp_properties.json的includePath里硬塞路径 - 确保
cmake.configureOnOpen是启用状态(默认开启),打开文件夹时会自动生成build/compile_commands.json - 禁用 C/C++ 插件的旧式 IntelliSense:在设置里搜
C_Cpp.intelliSenseEngine,设为disabled,让 CMake Tools 主导索引 - 如果用了
FetchContent或add_subdirectory引入第三方库,确保其target_include_directories用了PUBLIC或INTERFACE,否则下游 target 看不到
launch.json 里写死 "program": "./build/myapp" 是定时炸弹
小型项目这么写没问题,但大型项目多配置(Debug/Release)、多目标(lib/exec/test)、多架构(x86_64/aarch64)时,硬编码路径必然崩。
- 用
${command:cmake.launchTargetPath}替代固定路径 —— 这个变量由 CMake Tools 动态生成,指向当前构建目标的真实路径 - 确保
launch.json中的configurations项包含"type": "cppdbg"和"request": "launch",否则变量不生效 - 远程开发时,
program必须是绝对路径,且 build 目录位置需与远程机器权限一致;本地路径变量(如${workspaceFolder})在 remote-SSH 场景下不会自动映射
configure 失败还报 “Generator is not available” 或 “Could not find a package configuration file”
前者说明你选了 CMake Generator(比如 Ninja 或 MinGW Makefiles),但对应工具没装;后者多因 find_package(XXX) 找不到库,而非 CMake 本身问题。
立即学习“C++免费学习笔记(深入)”;
- Windows 用户推荐选
MinGW Makefiles(配 MinGW-w64)或Visual Studio 17 2022(配 Build Tools);选了 Ninja 就得装ninja-build,Ubuntu 下是sudo apt install ninja-build -
find_package(OpenCV)报错?先注释掉该行,确认基础configure能过;再查OpenCV_DIR是否设对,或运行find /usr -name "OpenCVConfig.cmake" 2>/dev/null定位路径 -
buildDirectory推荐设为${workspaceFolder}/build/${buildType}-${buildKit}这类带变量的绝对路径,避免污染源码目录或跨配置冲突
target_include_directories 后没重新 configure,或者远程开发时 build 目录权限没对齐,这些地方一漏,标红和断点就全乱套。


















