使用“$F$2:$G$7
”我可以构建可执行文件,但是我无法找到激活c ++ 17 intellisense的内容。我尝试了很多组合,如下所示,似乎都没有工作
的CMakeLists.txt
-Xclang -std=c++17
的main.cpp
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)
CMakeSettings.json
#include <tuple>
namespace test1::test2 // red [qualified name is not allowed]
// ^^^^^^^^^^^^^
{}
int main()
{
auto[a, b] = std::pair<int, int>();
// ^^^^^^
return 0;
}
答案 0 :(得分:1)
至于2017年12月,定义IntelliSense模式的唯一方法是通过根文件夹中的CppProperties.json
文件,您无法将其与CMakeSettings.json
结合使用。
查看Visual C++ Team Blog: Customizing your Environment with Visual C++ and Open Folder下的评论:
- justanotherdev:“......是否有可能从通过CMake创建的项目中继承CppProperties包含?如果是这样,从Windows CMake项目获取Linux intellisense将是轻而易举的并且将解决Linux的一个主要问题(需要手动指定项目的所有包含。)“
- Will Buik [MSFT]:“今天不支持....”
我已经尝试过,并且没有运气使用与"Open Folder projects in Visual C++" documentation中建议类似的东西。
我确实去了Project / Edit Settings / CppProperties.json
并插入测试我的配置,如
...
"compilerSwitches": "/std:c++17",
"intelliSenseMode": "windows-msvc-x86"
...
或任何其他支持的模式:
<强>参考强>
答案 1 :(得分:1)
要为C ++ 17启用正确的Intellisense,请在项目定义之前在CMakeLists.txt中指定set(CMAKE_CXX_STANDARD 17)
;无需其他配置。 CMake将在构建时为clang-cl提供-std=c++17
。
cmake_minimum_required (VERSION 3.9.2)
set(CMAKE_CXX_STANDARD 17)
project ("test")
add_executable (Test "test.cpp" "test.h")
在Visual Studio 2017 15.9.8中验证