最近的工作基本上在Linux上做。
但是,也有一个小工具需要同时支持Windows/Linux,工具依赖于Qt,从官方下载的版本上有qt5.6.3/5.12.12,这两个版本都有MSVC2015。
因此搞了一个Win7的虚拟机,VS2015实在太大了,从VS2019的社区版看到可以定制仅安装C++工具链即可。
VS2019裁剪最小项
C++核心桌面功能
实时调试器
Windows 10 SDK(10.0.16299.0)
MSVC v140 - VS 2015 C++ 生成工具(v14.00)
安装完后,使用VS 2019的IDE是可以编译一个样例工程,但通过cmake来调用,就会发现各种问题。
最头痛的一个问题是:
Could not load file or assembly 'Microsoft.Build, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified
对应的中文提示往往是:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\Microsoft.Cpp.Current.targets(64,5): error MSB4062: 未能从程序集 C:\Program Files (x86)\MSBuild\Micro
soft.Cpp\v4.0\v140\Microsoft.Build.CppTasks.Common.dll 加载任务“SetEnv”。未能加载文件或程序集“Microsoft.Build.Utilities.Core, Version=14.0.0.0, Culture=neutr
al, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。 请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Mi
crosoft.Build.Framework.ITask 的公共类。 [D:\01.SrcCode\XXX\build\CMakeFiles\3.25.1\VCTargetsPath.vcxproj]
反复研究、搜索引擎,最终在github一个issue中找到原因,链接:https://github.com/deadlydog/New-NuGetPackage/issues/1
相应关键提示点:需要安装Microsoft Build Tools 2015!!!
> If you install the Microsoft Build Tools 2015 [https://www.microsoft.com/en-us/download/details.aspx?id=48159] it resolved the issue for me.
>
> I had a number of VS2015 projects with this great package, and after a rebuild of my machine and clean VS2017 Pro installed I had the issue described:
>
> Could not load file or assembly 'Microsoft.Build, Version=14.0.0.0
>
> Installing the VS2015 build tools fixed it for me
CMake编译生成VS工程时,还有一些其他注意事项:
1、报MSBUILD找不到VCTargetsPath,
D:\01.SrcCode\xxxx\build\CMakeFiles\3.25.1\VCTargetsPath.vcxproj(14,2): error MSB4019: 未找到导入的项目“D:\Microsoft.Cpp.Default.props”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。
实际上是MSBUILD找不到VS2015工具集的一些配置信息,通常安装在C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140路径下
通过环境变量设置即可解决,如下:
set VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
2、VS2015与Windows SDK的配套问题,VS2015默认支持Windows 8.1 SDK,而现在通常是Windows 10 SDK,而且版本越来越新。
实际上Windows 10 SDK的新版本也是不再默认支持VS2015,最后支持VS2015的SDK版本为10.0.14393.0
,
链接:https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2014%202015.html
通常的解决办法是定义环境变量:CMAKE_SYSTEM_VERSION
及CMAKE_WINDOWS_KITS_10_DIR
,从文档https://cmake.org/cmake/help/v3.13/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.html
来看CMAKE_WINDOWS_KITS_10_DIR
应该定义成这样:
set CMAKE_WINDOWS_KITS_10_DIR=C:\Program Files (x86)\Windows Kits\10
不带Include/10.0.xxxx字样。
3、当然,如果提示msbuild.exe都找不到,则应该在VS 2015 X86/X64本机工具命令提示符下的环境运行,或者执行脚本设置好环境变量c:\xxxx\vsvarsall.bat amd64
标签:10,cmake,VS2019,Windows,VS2015,Build,Microsoft From: https://www.cnblogs.com/eaglexmw/p/18140231