启用 c++17 智能感知打开文件夹visual studio ninja-clang

Gam*_*Gam 6 c++ cmake visual-studio-2017

使用“ -Xclang -std=c++17”我可以构建可执行文件,但是我找不到激活 c++17 智能感知的内容。我已经尝试了很多组合,如下所示,但似乎都不起作用

CMakeLists.txt

cmake_minimum_required(VERSION 3.9.2)
set(CMAKE_CXX_STANDARD 17)
project(myapp)
add_compile_options("-Xclang" "-std=c++17")
add_executable(myapp main.cpp)
set_target_properties(myapp PROPERTIES CXX_STANDARD 17)
target_compile_features(myapp PRIVATE cxx_std_17)
Run Code Online (Sandbox Code Playgroud)

主程序

#include <tuple>
namespace test1::test2 // red [qualified name is not allowed]
//       ^^^^^^^^^^^^^
{}

int main()
{
    auto[a, b] = std::pair<int, int>();
    //  ^^^^^^
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

CMakeSettings.json

{
  // See https://go.microsoft.com//fwlink//?linkid=834763 for more information about this file.
  "configurations": [
    {
      "name": "x64-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x64_x64" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": "",
      "variables": [
        {
          "name": "CMAKE_CXX_COMPILER",
          "value": "clang-cl"
        },
        {
          "name": "CMAKE_C_COMPILER",
          "value": "clang-cl"
        },
        {
          "name": "CMAKE_SYSTEM_NAME",
          "value": "Windows"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

Flo*_*ian 2

至于 2017 年 12 月,定义 IntelliSense 模式的唯一方法是通过CppProperties.json根文件夹中的文件,您不能将其与CMakeSettings.json.

\n\n

请参阅Visual C++ 团队博客:使用 Visual C++ 和打开文件夹自定义环境下的评论:

\n\n
\n
    \n
  • justanotherdev:“...是否可以从通过 CMake 创建的项目继承 CppProperties 包含内容?如果是这样,从 Windows CMake 项目获取 Linux 智能感知将是一件轻而易举的事情,并且将解决 Linux 的一个主要问题(需要指定所有手动包含项目)。"\n \n
      \n
    • Will Buik [MSFT]:“今天不支持\xe2\x80\x99t。......”
    • \n
  • \n
\n
\n\n
\n\n

我已经尝试过,但没有使用类似于“在 Visual C++ 中打开文件夹项目”文档中推荐的内容。

\n\n
    \n
  1. 我确实去了Project / Edit Settings / CppProperties.json

    \n\n

    在此输入图像描述

  2. \n
  3. 并插入我的配置中进行测试,例如

    \n\n
    ...\n    "compilerSwitches": "/std:c++17",\n    "intelliSenseMode": "windows-msvc-x86"\n...\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    或任何其他支持的模式:

    \n\n

    在此输入图像描述

  4. \n
\n\n
\n\n

参考

\n\n\n