【问题标题】:Compiling C++17 using CLion, CMake and the VS2017 compiler使用 CLion、CMake 和 VS2017 编译器编译 C++17
【发布时间】:2017-07-29 19:16:20
【问题描述】:

创建新的 CLion 项目并选择 C++17 语言标准时,C++17 代码将无法编译。 初始CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 3.8)
project(optional2)
set(CMAKE_CXX_STANDARD 17)
set(SOURCE_FILES main.cpp)
add_executable(optional2 ${SOURCE_FILES})

要编译 C++17 代码,我必须在 CMakeLists.txt 文件中添加以下行:

add_compile_options(/std:c++latest)

这是在 CMAKE / CLion 中添加此编译选项的正确方法(和/或唯一方法?)吗?

在运行 CLion 2017.2 的 Windows 10 工作站上使用的 C++ 编译器是带有 nmake.exe 的 vs2017 cl.exe。

【问题讨论】:

标签: c++ visual-studio cmake c++17 clion


【解决方案1】:

CMAKE_CXX_STANDARD 变量用于初始化CXX_STANDARD 属性。

来自属性文档:

对于没有标准级别概念的编译器,例如 MSVC, 这没有效果。

对于带有普通 CMake 的 Visual Studio 2017,C++17(默认为 C++14)的规范方式是:

target_compile_options(optional2 PRIVATE /std:c++latest)

【讨论】:

  • 谢谢;如果我将语句放在“add_executable(optional2 ${SOURCE_FILES})”语句之后,那就可以了。
  • @SethCurry 这是预期的。目标 optional2 不存在,直到调用 add_executable 创建它
猜你喜欢
  • 2017-06-06
  • 2018-07-04
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2016-02-28
  • 1970-01-01
相关资源
最近更新 更多