⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Building Configuration

构建类型

DuckDB可以在许多不同的设置中构建,其中大多数直接对应于CMake,但并非全部。

release

此版本已移除所有断言、调试符号和代码,针对性能进行了优化。

debug

此构建运行包含所有调试信息,包括符号、断言和#ifdef DEBUG块。 由于这些原因,此构建的二进制文件预计会较慢。 注意:此构建不会自动设置特殊的调试定义。

relassert

此构建不会触发#ifdef DEBUG代码块,但它仍然具有调试符号,使得可以逐步执行并带有行号信息,并且在此构建中仍然检查D_ASSERT行。 此构建模式的二进制文件比debug模式的二进制文件要快得多。

reldebug

这个构建在许多方面与relassert相似,只是在这个构建中,断言也被移除了。

benchmark

此构建是带有BUILD_BENCHMARK=1设置的release的简写。

tidy-check

这将创建一个构建,然后运行Clang-Tidy,通过静态分析检查问题或风格违规。 CI 也将运行此检查,如果此检查失败,将导致构建失败。

format-fix | format-changes | format-main

这实际上并不会创建一个构建,而是使用以下格式检查器来检查样式问题:

  • clang-format 用于修复代码中的格式问题。
  • cmake-format 用于修复 CMakeLists.txt 文件中的格式问题。

CI 也会运行此检查,如果此检查失败,将导致失败。

扩展选择

核心DuckDB扩展是由DuckDB团队维护的。这些扩展托管在duckdb GitHub组织中,并由core扩展仓库提供服务。

核心扩展可以通过CORE_EXTENSION标志作为DuckDB的一部分构建,然后列出要构建的扩展名称。

CORE_EXTENSION='tpcd;httpfs;fts;json;parquet' make

有关此主题的更多信息,请访问building duckdb extensions

包标志

对于由DuckDB核心维护的每个包,Makefile中都有一个标志来启用包的构建。 可以通过在当前env中设置它们,通过像bashrczshrc这样的设置文件,或者在调用make之前设置它们来启用这些标志,例如:

BUILD_PYTHON=1 make debug

BUILD_PYTHON

当此标志设置时,Python 包会被构建。

BUILD_SHELL

当此标志设置时,CLI 会被构建,这通常是默认启用的。

BUILD_BENCHMARK

当此标志被设置时,DuckDB的内部基准测试套件将被构建。 更多关于此的信息可以在此处找到 here.

BUILD_JDBC

当设置此标志时,Java 包将被构建。

BUILD_ODBC

当此标志设置时,将构建ODBC包。

杂项标志

DISABLE_UNITY

为了提高编译时间,我们使用Unity Build来合并翻译单元。 然而,这可能会隐藏包含错误,此标志禁用使用unity构建,以便可以检测到这些错误。

DISABLE_SANITIZER

在某些情况下,运行已启用消毒剂构建的可执行文件是不支持的/可能会导致问题。Julia 就是一个例子。 启用此标志后,构建时将禁用消毒剂。

覆盖 Git 哈希和版本

在使用OVERRIDE_GIT_DESCRIBE环境变量从源代码构建时,可以覆盖Git哈希和版本。 这在从不是完整Git仓库的源代码构建时非常有用(例如,没有提交哈希和标签信息的存档文件)。 例如:

OVERRIDE_GIT_DESCRIBE=v0.10.0-843-g09ea97d0a9 GEN=ninja make

运行 ./build/release/duckdb 时将产生以下输出:

v0.10.1-dev843 09ea97d0a9
...