VS2019编译遇CMake报错:CMAKE_C/CXX_COMPILER未设置等问题
解决VS2019 + CMake + Conan编译报错的步骤
核心问题说明
NMake MakeFiles生成器属于轻量级构建工具,不支持Visual Studio的v142工具集指定;同时未正确加载VS的开发环境,导致CMake无法自动定位C/C++编译器路径。
1. 切换CMake生成器为VS2019专属生成器
放弃使用NMake MakeFiles,改用VS2019原生支持的生成器,直接适配v142工具集:
- 命令行方式:
在项目根目录的build文件夹中执行:
其中cmake .. -G "Visual Studio 16 2019" -A x64 -T v142-A指定目标架构(如x86/x64),-T明确指定工具集版本为v142。 - VS Code方式:
打开CMake插件配置界面,将生成器选择为Visual Studio 16 2019,并在CMake配置项中添加CMAKE_GENERATOR_TOOLSET:STRING=v142。
2. 确保加载VS2019的开发环境
CMake依赖VS的环境变量才能定位编译器,需先初始化环境:
- 直接使用VS2019自带命令行:打开
x64 Native Tools Command Prompt for VS 2019(匹配你的目标架构),在该窗口内执行Conan和CMake命令。 - VS Code终端手动加载:
执行VS环境初始化脚本(路径根据你的VS安装位置调整):
完成后再运行编译流程。"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\VsDevCmd.bat" -arch=x64 -toolset=v142
3. 配置Conan适配VS2019工具链
让Conan正确识别VS2019的编译环境:
- 自动检测配置:在命令行执行
该命令会生成适配当前环境的Conan profile,自动关联conan profile detectv142工具集。 - 手动修改profile(可选):
找到Conan的默认profile文件(通常在%USERPROFILE%\.conan\profiles\default),添加以下内容:[settings] compiler=msvc compiler.version=16 compiler.toolset=v142 compiler.cppstd=17 # 根据项目需求调整版本
4. 清理旧缓存重新构建
删除项目中已生成的build目录,重新执行Conan安装和CMake配置命令,避免旧缓存的配置冲突。
内容的提问来源于stack exchange,提问作者petonicc
相关产品推荐
相关产品推荐

