【问题标题】:C++17 not working properly in QtCreator4.8C++17 在 QtCreator4.8 中无法正常工作
【发布时间】:2019-09-13 09:55:39
【问题描述】:

所以我试图在 QtCreator 4.8.1 中创建一个新的 C++17 cmake 项目,但遇到了一个小问题。看来我正在使用正确的链接器和编译器,但我必须在某处缺少一个设置,因为我完成的(小)项目不会构建。

g++-9 不在 Ubuntu 中,所以我做的第一件事就是安装它(还有 gcc-9)。然后我创建了一个新工具包并将 C/C++ 编译器更改为那个工具包。我没有对其进行其他更改。

#include <iostream>
#include <vector>
#include <algorithm>
#include <execution>

using namespace std;

int main()
{
    std::cout << __cplusplus << std::endl;

    std::vector<int> vec ={3, 2, 1, 4, 5, 6, 10, 8, 9, 4};

    std::sort(vec.begin(), vec.end());                            // sequential as ever
    std::sort(std::execution::seq, vec.begin(), vec.end());       // sequential
    std::sort(std::execution::par, vec.begin(), vec.end());       // parallel
    std::sort(std::execution::par_unseq, vec.begin(), vec.end()); // parallel and vectorized

    return 0;
}

虽然我可以按照标题进入正确的更新版本,但构建系统仍然抱怨 std::execution::seq 不存在(并且 __cplusplus 似乎一直指向 2014 年的版本)

编辑:我尝试通过将 set(CMAKE_CXX_STANDARD 17) 添加到我的 cmake 文件中来遵循类似问题中的建议,但现在我得到了

In file included from /usr/include/c++/9/pstl/parallel_backend.h:14,
                 from /usr/include/c++/9/pstl/algorithm_impl.h:25,
                 from /usr/include/c++/9/pstl/glue_execution_defs.h:52,
                 from /usr/include/c++/9/execution:32,
                 from /home/pedro/LockLessDt/main.cpp:4:
/usr/include/c++/9/pstl/parallel_backend_tbb.h:19:10: fatal error: tbb/blocked_range.h: No such file or directory
      |          ^~~~~~~~~~~~~~~~~~~~~

这听起来像是执行标头的问题。

__cplusplus 现在指向正确的值。

这是我的 cmake 文件

cmake_minimum_required(VERSION 2.8)
project(LockLessDt)
set(CMAKE_CXX_STANDARD 17)
add_executable(${PROJECT_NAME} "main.cpp")

【问题讨论】:

  • 您是否在编译器选项中明确指定 -std=c++17 标志?我目前正在使用g++ 9.2.1,使用的默认标准似乎是c++14
  • 重要的是Qt 的版本,而不是Qt Creator 的版本。是的,当然是重复的。
  • @Fareanor 我认为在这种情况下QtQt Creator 版本都无关紧要。从描述来看,似乎可以归结为“如何在我的 CMake 项目中启用 C++17 功能”。

标签: c++ qt cmake c++17


【解决方案1】:

我想有人 here 也有类似的问题。

当您使用 CMake 时,不妨尝试设置:

set(CMAKE_CXX_STANDARD 17)

【讨论】:

  • 试过了,看来现在我遇到了一个更奇怪的错误。 tbb/blocked_range.h: 没有这样的文件或目录
猜你喜欢
  • 2023-01-31
  • 2013-08-30
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 2020-08-01
相关资源
最近更新 更多