Leveldb, cmake и c++20 («memory_order_relaxed» не является членом «std::memory_order»)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Leveldb, cmake и c++20 («memory_order_relaxed» не является членом «std::memory_order»)

Сообщение Anonymous »

После обновления cmake для использования c++20 с set(CMAKE_CXX_STANDARD 20) при компиляции базы данных зависимостей появляются следующие ошибки

Код: Выделить всё

[ 11%] Built target glfw
[ 15%] Built target raylib
[ 16%] Built target fmt
[ 16%] Building CXX object _deps/leveldb-build/CMakeFiles/leveldb.dir/util/env_posix.cc.o
/home/natan/Projects/raylib-tutorial-2/03-classy_clash/build/_deps/leveldb-src/util/env_posix.cc: In constructor ‘leveldb::{anonymous}::SingletonEnv::SingletonEnv()’:
/home/natan/Projects/raylib-tutorial-2/03-classy_clash/build/_deps/leveldb-src/util/env_posix.cc:840:53: error: ‘memory_order_relaxed’ is not a member of ‘std::memory_order’
840 |     env_initialized_.store(true, std::memory_order::memory_order_relaxed);
|                                                     ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/cassert:44,
from /home/natan/Projects/raylib-tutorial-2/03-classy_clash/build/_deps/leveldb-src/./util/posix_logger.h:13,
from /home/natan/Projects/raylib-tutorial-2/03-classy_clash/build/_deps/leveldb-src/util/env_posix.cc:36:
/home/natan/Projects/raylib-tutorial-2/03-classy_clash/build/_deps/leveldb-src/util/env_posix.cc: In static member function ‘static void leveldb::{anonymous}::SingletonEnv::AssertEnvNotInitialized()’:
/home/natan/Projects/raylib-tutorial-2/03-classy_clash/build/_deps/leveldb-src/util/env_posix.cc:857:54: error: ‘memory_order_relaxed’ is not a member of ‘std::memory_order’
857 |     assert(!env_initialized_.load(std::memory_order::memory_order_relaxed));
|                                                      ^~~~~~~~~~~~~~~~~~~~
gmake[2]: *** [_deps/leveldb-build/CMakeFiles/leveldb.dir/build.make:580: _deps/leveldb-build/CMakeFiles/leveldb.dir/util/env_posix.cc.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:425: _deps/leveldb-build/CMakeFiles/leveldb.dir/all] Error 2
gmake: *** [Makefile:156: all] Error 2
C++17 работает нормально.

Что я могу сделать, чтобы исправить ошибку сборки с помощью C++20?

Должен ли я создать форк leveldb только для того, чтобы это исправить?


Подробнее здесь: https://stackoverflow.com/questions/798 ... -stdmemory
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»