Zum Inhalt springen

Build-Konfiguration

Build-Typen

DuckDB lässt sich in vielen verschiedenen Einstellungen bauen; die meisten entsprechen direkt CMake, aber nicht alle.

release

Dieser Build ist von allen Assertions und Debug-Symbolen sowie Debug-Code befreit und auf Leistung optimiert.

debug

Dieser Build läuft mit allen Debug-Informationen, einschließlich Symbolen, Assertions und #ifdef DEBUG-Blöcken. Dadurch sind Binärdateien dieses Builds voraussichtlich langsam. Hinweis: Die speziellen Debug-Defines werden für diesen Build nicht automatisch gesetzt.

relassert

Dieser Build löst die Codeblöcke #ifdef DEBUG nicht aus, hat aber weiterhin Debug-Symbole, mit denen sich die Ausführung mit Zeilennummern schrittweise verfolgen lässt, und D_ASSERT-Zeilen werden weiterhin geprüft. Binärdateien dieses Build-Modus sind deutlich schneller als die des Modus debug.

reldebug

Dieser Build ähnelt relassert in vielerlei Hinsicht, nur Assertions sind hier ebenfalls entfernt.

benchmark

Dieser Build ist eine Kurzform für release mit gesetztem BUILD_BENCHMARK=1.

tidy-check

Damit wird ein Build erzeugt und anschließend Clang-Tidy ausgeführt, um Probleme oder Stilverletzungen per statischer Analyse zu finden. Die CI führt diese Prüfung ebenfalls aus und schlägt fehl, wenn die Prüfung fehlschlägt.

format-fix | format-changes | format-main

Das erzeugt keinen Build, sondern prüft mit den folgenden Format-Checkern auf Stilprobleme:

Die CI führt diese Prüfung ebenfalls aus und schlägt fehl, wenn die Prüfung fehlschlägt.

Auswahl der Erweiterungen

DuckDB-Kern-Erweiterungen sind die vom DuckDB-Team gepflegten Erweiterungen. Sie liegen in der GitHub-Organisation duckdb und werden vom Erweiterungs-Repository core ausgeliefert.

Weitere Erweiterungen lassen sich über das Flag BUILD_EXTENSIONS als Teil von DuckDB bauen, indem Sie die Namen der zu bauenden Erweiterungen angeben.

Terminal window
BUILD_EXTENSIONS='tpch;httpfs;fts;json;parquet' make

Mehr dazu unter DuckDB-Erweiterungen bauen.

Paket-Flags

Für jedes Paket, das vom DuckDB-Kern gepflegt wird, gibt es im Makefile ein Flag, um das Bauen des Pakets zu aktivieren. Diese Flags können Sie entweder in der aktuellen env setzen, über Setup-Dateien wie bashrc oder zshrc, oder vor dem Aufruf von make, zum Beispiel:

Terminal window
BUILD_PYTHON=1 make debug

BUILD_PYTHON

Ist dieses Flag gesetzt, wird das Python-Paket gebaut.

BUILD_SHELL

Ist dieses Flag gesetzt, wird die CLI gebaut; das ist in der Regel standardmäßig aktiviert.

BUILD_BENCHMARK

Ist dieses Flag gesetzt, wird die hauseigene Benchmark-Suite von DuckDB gebaut. Weitere Informationen finden Sie im README.

BUILD_JDBC

Ist dieses Flag gesetzt, wird das Java-Paket gebaut.

BUILD_ODBC

Ist dieses Flag gesetzt, wird das ODBC-Paket gebaut.

Weitere Flags

DISABLE_UNITY

Um die Kompilierzeit zu verkürzen, nutzen wir Unity Build, um Übersetzungseinheiten zusammenzufassen. Das kann jedoch Include-Fehler verdecken. Dieses Flag schaltet den Unity Build aus, damit solche Fehler erkannt werden.

DISABLE_SANITIZER

In manchen Situationen wird das Ausführen einer mit Sanitizern gebauten Binärdatei nicht unterstützt oder verursacht Probleme. Julia ist ein Beispiel dafür. Mit diesem Flag werden die Sanitizer für den Build deaktiviert.

Git-Hash und Version überschreiben

Git-Hash und Version lassen sich beim Bauen aus dem Quellcode mit der Umgebungsvariable OVERRIDE_GIT_DESCRIBE überschreiben. Das ist nützlich, wenn aus Quellen gebaut wird, die nicht Teil eines vollständigen Git-Repositorys sind (z. B. eine Archivdatei ohne Informationen zu Commit-Hashes und Tags). Zum Beispiel:

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

Ergibt beim Ausführen von ./build/release/duckdb die folgende Ausgabe:

v0.10.1-dev843 09ea97d0a9
...