博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VS2017自带VS2015编译器等在命令行下无法使用问题
阅读量:6446 次
发布时间:2019-06-23

本文共 2827 字,大约阅读时间需要 9 分钟。

1、起因

早前把VS2015卸了,安装了VS2017。因为VS2017安装的时候可以选择安装VS2015编译套件,也就安装了。使用上一直没有什么问题,所以也没有注意到这个细节。

后来使用cmake生成项目工程文件的时候,选择VS2015编译器,却提示找不到C编译器。

CMake Error at CMakeLists.txt:3 (project):  No CMAKE_CXX_COMPILER could be found.

2、解决

原本以为是环境变量没有设置好,查看了一下VS140COMNTOOLS的路径是对的。

然后试着在VS2015本机工具命令提示符工具下试试cmake行不行。结果一打开VS2015本机工具命令提示符就提示让你安装Visual Studio or C++ Build SKU

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>vcvarsall.bat "x86" "8.1"Error in script usage. The correct usage is:    vcvarsall.bat [option]  or    vcvarsall.bat [option] store  or    vcvarsall.bat [option] [version number]  or    vcvarsall.bat [option] store [version number]where [option] is: x86 | amd64 | arm | x86_amd64 | x86_arm | amd64_x86 | amd64_armwhere [version number] is either the full Windows 10 SDK version number or "8.1" to use the windows 8.1 SDK:The store parameter sets environment variables to support  store (rather than desktop) development.:For example:    vcvarsall.bat x86_amd64    vcvarsall.bat x86_arm store    vcvarsall.bat x86_amd64 10.0.10240.0    vcvarsall.bat x86_arm store 10.0.10240.0    vcvarsall.bat x64 8.1    vcvarsall.bat x64 store 8.1:Please make sure either Visual Studio or C++ Build SKU is installed.

问题看来就在这里,仔细查看了一下C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat这个文件,发现了问题所在(见下面代码注释)。

@echo offREM VC command prompt depends on env. variable installed during VS. This causes VC command prompt to break for C++ Build SKU.REM So if VS is not installed and C++ Build SKU is installed, set appropriate environment for C++ Build SKU by calling into it's batch file.REM C++ Build SKU supports only desktop development environment.:: 上面是注释不用管,问题就出现在下面的两行:: 下面这一行检查devenv.exe这个文件,但是这里是没有的if exist "%~dp0..\common7\IDE\devenv.exe" goto setup_VS:: 检查到没有devenv.exe,也没有wdexpress.exe文件,就跳过去检查vs build tools了if not exist "%~dp0..\common7\IDE\wdexpress.exe" goto setup_buildsku:setup_VSif "%1" == "" goto x86if "%2" == "" goto check_platformecho "1 is %1 2 is %2"setlocalset _Argument2=%2if not "%2"=="store" if not "%2"=="8.1" if not "%_Argument2:~0,3%"=="10."  goto usageendlocal.... 此处省略很多行:setup_buildskuif not exist "%~dp0..\..\Microsoft Visual C++ Build Tools\vcbuildtools.bat" goto usageset CurrentDir=%CD%call "%~dp0..\..\Microsoft Visual C++ Build Tools\vcbuildtools.bat" %1 %2cd /d %CurrentDir%goto :eof

这里解决的办法很简单,把多余的两行检查注释掉就行了。(可以拷贝了一份vcvarsall.bat,在副本里面进行修改)

但是这样做只是在命令行下可以用了,cmake还是No CMAKE_CXX_COMPILER,检测不到编译器。
查看了一下CMAKE安装目录下的share\cmake-3.7\Modules\Compiler\MSVC-CXX.cmake文件,也没有什么收获。
但是可以通过直接指定编译器来使用,这是可以的。

cmake -DCMAKE_C_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe" -DCMAKE_CXX_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe" .

在VS2017的安装目录下还有一份VS2015的编译环境。默认路径是C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\bin

转载地址:http://kcpwo.baihongyu.com/

你可能感兴趣的文章
DataGridView的按钮列的点击事件
查看>>
图片的三级缓存基础
查看>>
Bootstrap 模态对话框只加载一次 remote 数据的解决办法
查看>>
性能测试工具比较
查看>>
在PYTHON3中,使用Asyncio来管理Event loop
查看>>
过滤器的类别
查看>>
testng入门教程5TestNG套件测试
查看>>
LIGO找到首个超越广义相对论的证据?
查看>>
unity, itween, closed path
查看>>
《老妈语录》 读后感
查看>>
sip协议音视频性能测试
查看>>
分享一个C#自定义事件的实际应用
查看>>
第十八章:并发程序的基本实现( 多进程 )
查看>>
【小总结】
查看>>
ftp下载文件失败get: Access failed: 550 Failed to open file. (t1.log)
查看>>
记录一下自己常用的maven工程的pom.xml模板
查看>>
LINUX下安装和配置WEBLOGIC10.0.3
查看>>
【Zookeeper】源码分析之服务器(三)之LeaderZooKeeperServer
查看>>
继续过中等难度的题目
查看>>
GIT入门笔记(3)- git中的一些概念和原理
查看>>