rar解压器下载-单向好友查询

msbuild
2023年4月3日发(作者:ie 自动关闭)

命令⾏编译_VS2019新特性:可以切换编译⼯具集啦

朋友们,在开发中你是否有这样的经历:⾟⾟苦苦,在CodeProject/Github上找到⼀个合适的开源代码⼯程,下载下来⽤VS打开,编译时

VS提⽰:Thistoolsetmaybeunknownormissing。然后你并没有因此⽽沮丧,你点燃了⼀根烟,动了动⼿指头,将PlatformToolset

切换到当前已安装的版本,重新编译,VS告诉你:0个错误,0个警告。没错,⼀切都是那么美好。

美好的东西可不⽌这些,可能还有更多。

就⽐如,近⽇,VS开发团队Will⽼哥给我们分享了VS2019的⼀些有关于⼯具集切换的更新,让我们来看看是咋回事。

从VS2019v16.1Preview3开始,v142版本的MSVC⼯具集的⼩版本并排安装就开始正式启⽤了。

⽽早在VS2017那会,VS就开始试⽔⼯具集的⼩版本并排安装特性,⽽在最新的VS2019中,有⼀些⼩的改变需要让各位朋友知道。

通常来说,作为开发者,我们并不需要关⼼所谓的”⼩版本”⼯具集。这个特性主要使⽤在这样的场景:代码中有Bug,或者MSVC本⾝有

Bug,但是⼜不能合理的绕开,这个时候,⼩版本⼯具集就能起到作⽤了(也就是所谓的:惹不起,我躲得起)。

安装⼩版本⼯具集

VS2017和VS2019最⼤的区别之⼀在于它们对⼩版本⼯具集的分解⽅式。从VS2019开始,开发团队开始从架构这⼀层⾯对⼯具集进⾏

了分离,同时也包括⼩版本的⼯具集。值得注意的是,VS2017那个时候,只有⼀个⼩版本⼯具集可供安装,到了2019的时候,我们就可

以安装我们想要的针对所有不同平台的⼯具集了。

在VS安装包中,当我们选择”DesktopC++Developement”Workload时,系统将⾃动安装最新版本的⼯具集。如果我们想要安装其他

的版本,可以在”individualcomponents”页⾯进⾏选择,具体来说,是在”Compilers,buildtools,andruntimes”下,我们可以看

到所有不同版本的MSVC⼯具集,包括那些⼩版本的。

举个栗⼦。我们可以看到对应于”MSVCv142″的⼩版本”(v14.20)”和”(v14.21)”。在最新版本中,我们还将看

到”(v14.22)”和”(v14.23)”。

使⽤⼩版本⼯具集

当你使⽤C++MSBuild来编译你的⼯程时,使⽤MSVC⼩版本⼯具集的⽅法和之前⼀样,没有任何改变。

注意了,⼩版本的⼯具集在默认情况下,并不会出现在项⽬属性的”PlatformToolset”选项下。如果希望启⽤,则需要编辑你的项⽬⽂件

(vcxproj)。每⼀个并排安装的⼩版本⼯具集都包含⼀个.props后缀的⽂件,这些props⽂件可以被包含到项⽬的vcxproj⽂件中。

在开始做我们的实验之前,我们可以打开编译详细输出,⽤来观察编译时使⽤的编译器版本信息。可以在编译命令⾏添加”-Bv”选项开

启,如下图所⽰:

然后,打开”VCAuxiliaryBuild14.20″⽬录(这个⽬录也是VS2019v16.1Preview3的安装⽬录)时,可以看到有三个⽂件,将这三个

⽂件中的””拷贝⾄解决⽅案⽬录。

通过右键点击解决⽅案,点击”OpenFolderinFileExplorer”的⽅法来打开解决⽅案⽬录。

将””拷贝⾄解决⽅案⽬录后,这个props⽂件将和解决⽅案Sln⽂件在同⼀⽬录下,如下图所

⽰:

接下来,在VS中将⼯程卸载,然后就可以编辑⼯程⽂件了。在⼯程⽂件中,找到如下的语句:

在上⾯的语句上⽅(有点绕啊),添加⼀条import语句,如下:

最后,保存⼯程⽂件,然后加载项⽬。⾄此,我们就可以重新构建⼯程,然后从构建⽇志中,可以看到我们使⽤的是14.20版本的MSVC编

译⼯具集了。

在CMake中使⽤⼩版本⼯具集

除了VSMSBuild项⽬,我们还可以在VS的CMake项⽬中⽆缝的使⽤这些⼯具集。我们需要在CMakeSetting⽂件中新建⼀

个”VCToolsVersion”的环境变量,然后设置想要使⽤的版本号,例如”14.20″。可以直接打开CMakeSettings对应的JSON⽂件进

⾏修改。

请注意了,在编译之前,还需要删除之前的缓存,⽅法为:在”Project>CMake>Cache>DeleteCache”中删除缓存,然后

在”Project>GenerateCache”中重新⽣成⼀次。为了验证CMake是否使⽤了正确的⼯具集,可以在编译输出窗⼝中观察编译⽇志。

在命令⾏中使⽤⼩版本⼯具集

如果不想在VS中配置,也可以通过配置命令⾏的⽅式来使⽤⼩版本⼯具集。VS的命令⾏编译⼯具位于VS2019v16.1Preview3的安装⽬

录,例如:C:ProgramFiles(x86)MicrosoftVisualStudioPreviewEnterpriseVCAuxiliaryBuilddirectory。

在这个⽂件夹中,我们可以看到有4个命令⾏批处理⽂件(vsvars*.bat),从中选择任意⼀个,拷贝⼀份并进⾏修改。这些⽂件内容⽐较简

单,它们直接调⽤这个⽂件,区别在于使⽤了不同的架构参数。按照这个原理,我们可以添加⼀个新的参数:-

vcvars_ver=14.20,来实现对特定版本⼯具集的调⽤。

同上,可以通过执⾏”cl-Bv”来判断编译过程是否使⽤了正确的版本。

总结

个⼈来说,本⽂的配置过程是⽐较繁琐的,我觉得⼀部分原因可能是:这个特性使⽤的⼈⽐较少。

但是,俗话说得好:有总⽐没有好(还挺押韵)。

更多推荐

msbuild