leveldb在win下编译
leveldb在unix下编译很简单,不赘述。
之前看代码都是在linux下编译的,在win下看相关的实现的话,还是要配合编译一下的
本次编译环境
- win == 11
- cmake == 3.31.0
- ninja == 1.12.1
- clang == 18.1.0rc
- msvc == 2022
到手clone文件之后首先还是把third_party里的submodule先更新一下,然后就是编译了,
1
2
git submodule init
git submodule update
leveldb的编译组织全靠cmake的,如果你不想用vs看代码的话,就需要生成compdb,cmake下compdb目前只支持make + ninja作为generator的情况下生成。
所以我选择ninja做为generator,不用开vs,直接vscode + clangd插件看代码
1
cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -GNinja
然后直接走编译流程就行了,但我这里碰到部分warn as error的问题,主要在benchmark里,所以在编译bench这个lib的时候需要额外的加上部分cflgas
这部分要+在leveldb里, 主要是windows下sscanf会让你用更安全的ms扩展版本。
1
2
3
4
5
if (WIN32)
target_compile_options(leveldb
PUBLIC
-Wno-deprecated-declarations)
endif(WIN32)
另外一部分要加在benchmark里
1
2
3
4
5
if (WIN32)
target_compile_options(benchmark
PUBLIC
-Wno-invalid-offsetof -Wno-shorten-64-to-32)
endif(WIN32)
然后熟悉clangd的那套的话,自己陪一下就可以看代码了。
This post is licensed under CC BY 4.0 by the author.