尝试用cmake配置构建代码,如下所示:
cmake_minimum_required(VERSION 3.10)
project(filemanager)
set(DEBUG_MODE "Debug")
set(CMAKE_CXX_STANDARD 17)
add_compile_options("-m32")
set(CMAKE_CXX_FLAGS "-m32 -std=c++17")
set(CMAKE_C_FLAGS "-m32")我收到了一个函数中的错误:
error: 'scoped_lock' is not a member of 'std'我的代码摘要如下所示:
#include <mutex>
#include <thread>
#include <iostream>
#include <vector>
#include <functional>
#include <chrono>
int GetRequestId()
{
std::scoped_lock lock(m_mutex);
return 0;
}我的操作系统Ubuntu 16.04我的cmake输出如下:
-- The C compiler identification is GNU 5.5.0
-- The CXX compiler identification is GNU 5.5.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done编辑他们说这是一个编译器版本问题。我安装了gcc-7g++-7,优先考虑如下:
update-alternatives --query gcc
Name: gcc
Link: /usr/bin/gcc
Status: auto
Best: /usr/bin/gcc-5
Value: /usr/bin/gcc-5
Alternative: /usr/bin/gcc-5
Priority: 20
Alternative: /usr/bin/gcc-7
Priority: 10这样做对吗?
发布于 2021-03-23 21:41:51
好的,最后,我构建了代码。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 20首先,这些命令对其工作的编译器版本进行优先级排序。
发布于 2022-09-14 11:19:37
“std::scoped_lock”只能从C++17开始使用。
https://stackoverflow.com/questions/66771395
复制相似问题