[英]How do I get CMake Tools to compile programs in Visual Studio Code with C++11 (or higher) features?
我一般是 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 错误或警告,就在我尝试使用 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 文件如下所示:
cmake_minimum_required(VERSION 3.0.0)
project(JRPG VERSION 0.1.0)
include(CTest)
enable_testing()
add_executable(JRPG main.cpp)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
当我将底部三行直接移到项目名称和版本行(见下文)下方时,构建按预期工作。 我还不知道为什么这样做会奏效,但我相信当我深入研究文档时,我会很快弄清楚。 谢谢!
cmake_minimum_required(VERSION 3.0.0)
project(JRPG VERSION 0.1.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
include(CTest)
enable_testing()
add_executable(JRPG main.cpp)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.