【发布时间】:2020-04-18 16:34:49
【问题描述】:
总的来说,我是 CMake 的新手,所以希望我做错了一些简单的事情,但我正在努力寻找解决方案。我无法获得 CMake 工具来编译带有 c++11(或更高功能)的琐碎程序。理想情况下,我想启用 c++17。
例如,如果我的整个 main() 函数是
int main(int, char**)
{
auto number{9};
return 0;
}
我在尝试构建时收到以下 2 个错误和 1 个警告:
error: declaration of variable 'number' with deduced type 'auto' requires an initializer
error: expected ';' at end of declaration
warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
我的 VSCode C++ 设置设置为 C++17 标准,当我编写代码时,我没有收到任何 Intellisense 错误或警告,就在我尝试 build 使用 CMake 工具扩展。
我还尝试将以下内容添加到我的 CMakeLists.txt 文件中:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
我错过了什么?非常感谢!
平台和版本
操作系统:macOS High Sierra 10.13.6
CMake 版本:3.16.2
VSCode 版本:1.41.1
CMake 工具扩展版本:1.2.3
编译器/工具链:Clang 10.0.0
【问题讨论】:
-
请显示您的
CMakeLists.txt文件的内容 -
试试
target_compile_features(your_project PUBLIC cxx_std_17)。 -
尝试以高详细度构建,以便查看实际使用了哪些编译器标志。
-
你试过
set(CMAKE_CXX_EXTENSIONS ON)吗?错误消息确实说它是一个扩展...
标签: c++ c++11 visual-studio-code cmake c++17