一句话主题
从VSv16.9Preview2版开始新增了一项改进:开发者可以根据CMake工具链文件设置的变量值在CMake工程中配置IntelliSense。
当使用CMake工具链文件进行配置和构建时,这项改进可以实现IntelliSense的自动化配置。例如,VisualStudio现在可以使用Android工具链文件为CMake工程提供IntelliSense。这些更改还将改善使用VisualStudio的IoT(交叉编译器)配置的嵌入式开发人员的IntelliSense体验。此支持建立在VisualStudio对CMake的本机支持的基础上,并且在VisualStudio版本16.9Preview2中可用。
当使用GCC或Clang作为编译器时,VisualStudioVisualStudio做了如下的更改以处理CMake工具链文件。这些更改适用于本地Windows配置以及针对远程Linux系统或WSL的配置。VisualStudio将智能分析以下变量,以获取其他IntelliSense信息。
1.如果CMake工具链文件定义了CMAKE_CXX_COMPILER和CMAKE_C_COMPILER并将其值写入CMake缓存,则VisualStudio将向这些编译器查询预定义的DEFINES列表和包含搜索位置的列表。
2.如果CMake工具链文件定义了CMAKE_SYSROOT并将该值写入CMake缓存,则VisualStudio将在确定编译器定义和头文件时传递值(-sysroot=)。如果在CMake缓存中找不到此变量,则VisualStudio接下来检查是否定义了sysroot环境变量,并改用它。
3.如果CMake工具链文件定义了CMAKE_C_COMPILER_TARGET和CMAKE_CXX_COMPILER_TARGET并将值写入CMake缓存,则VisualStudio还将把这些值传递给编译器(-target=值)。
请注意,通过将CACHE附加到set命令,CMake脚本可以将变量写入CMake缓存。
此外,以下选项已添加到CMakeSettings.json以启用进一步的IntelliSense配置。可以根据配置设置这些选项。
其他参数
AdditionalCompilerArgs可用于显式添加在VisualStudio中,用来向编译器查询IntelliSense时要使用的参数。
useCompilerDefaults可用于禁用将GCC/Clang编译器用于IntelliSense配置(默认为true)。这些选项适用于Windows,Linux和WSL配置。
总结
根据配置文件对Intellisense进行自动化配置,再一次解放开发者的双手。也算一小进步。
最后
MicrosoftVisualC++团队的博客是我非常喜欢的博客之一,里面有很多关于VisualC++的知识和最新开发进展。大浪淘沙,如果你对VisualC++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。本文来自:《ConfigureIntelliSensewithCMakeToolchainFilesinVisualStudio16.9Preview2》