繁体   English   中英

如何获得 CMake 工具以使用 C++11(或更高版本)功能在 Visual Studio Code 中编译程序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM