执行到这一步出现报错:
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .
In file included from /home/zl/leveldb/util/comparator.cc:14:
/home/zl/leveldb/./util/no_destructor.h: In constructor ‘leveldb::NoDestructor<InstanceType>::NoDestructor(ConstructorArgTypes&& ...)’:
/home/zl/leveldb/./util/no_destructor.h:24:24: error: ‘is_standard_layout_v’ is not a member of ‘std’; did you mean ‘is_standard_layout’?
24 | static_assert(std::is_standard_layout_v<NoDestructor<InstanceType>>);
| ^~~~~~~~~~~~~~~~~~~~
| is_standard_layout
/home/zl/leveldb/./util/no_destructor.h:24:70: error: expected primary-expression before ‘>’ token
24 | static_assert(std::is_standard_layout_v<NoDestructor<InstanceType>>);
| ^~
/home/zl/leveldb/./util/no_destructor.h:24:72: error: expected primary-expression before ‘)’ token
24 | static_assert(std::is_standard_layout_v<NoDestructor<InstanceType>>);
| ^
gmake[2]: *** [CMakeFiles/leveldb.dir/build.make:468: CMakeFiles/leveldb.dir/util/comparator.cc.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:181: CMakeFiles/leveldb.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
解决方法:指定C++17版本
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 .. && cmake --build .
gcc、g++版本都是11.4.0