chore(vendor): vendor DuckDB v1.1.3 + CMake target DuckDB::DuckDB
cpp/vendor/duckdb/ con: - include/duckdb.h (C API, versionado) - download_duckdb.sh (descarga libs precompiladas para linux/windows) - .gitignore (libduckdb.so, duckdb.dll, duckdb.lib, libduckdb_static.a) - README.md cpp/CMakeLists.txt anade target INTERFACE 'duckdb_vendored' (alias DuckDB::DuckDB) que las apps enlazan con target_link_libraries. duckdb_copy_runtime(<target>) copia la lib runtime al lado del exe en build time. Primer consumidor: graph_explorer (issue 0010).
This commit is contained in:
@@ -107,6 +107,39 @@ if(NOT SQLite3_FOUND AND NOT TARGET sqlite3_vendored)
|
||||
add_library(SQLite::SQLite3 ALIAS sqlite3_vendored)
|
||||
endif()
|
||||
|
||||
# --- DuckDB (precompiled libs — see cpp/vendor/duckdb/README.md) ---
|
||||
# Header en vendor/duckdb/include/. Lib dinamica en linux/ o windows/ segun
|
||||
# el target. Las libs estan gitignored — ejecutar
|
||||
# `cpp/vendor/duckdb/download_duckdb.sh` la primera vez.
|
||||
if(NOT TARGET duckdb_vendored)
|
||||
set(DUCKDB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vendor/duckdb)
|
||||
if(WIN32)
|
||||
set(DUCKDB_LIB ${DUCKDB_DIR}/windows/duckdb.lib)
|
||||
set(DUCKDB_RUNTIME ${DUCKDB_DIR}/windows/duckdb.dll)
|
||||
else()
|
||||
set(DUCKDB_LIB ${DUCKDB_DIR}/linux/libduckdb.so)
|
||||
set(DUCKDB_RUNTIME ${DUCKDB_DIR}/linux/libduckdb.so)
|
||||
endif()
|
||||
if(NOT EXISTS ${DUCKDB_LIB})
|
||||
message(WARNING "[duckdb] ${DUCKDB_LIB} no existe — corre cpp/vendor/duckdb/download_duckdb.sh")
|
||||
endif()
|
||||
add_library(duckdb_vendored INTERFACE)
|
||||
target_include_directories(duckdb_vendored INTERFACE ${DUCKDB_DIR}/include)
|
||||
target_link_libraries(duckdb_vendored INTERFACE ${DUCKDB_LIB})
|
||||
add_library(DuckDB::DuckDB ALIAS duckdb_vendored)
|
||||
|
||||
# Helper para que las apps copien la runtime lib al lado del exe.
|
||||
# add_imgui_app puede invocarlo, o cada app lo hace en su CMakeLists.
|
||||
function(duckdb_copy_runtime target)
|
||||
if(EXISTS ${DUCKDB_RUNTIME})
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${DUCKDB_RUNTIME} $<TARGET_FILE_DIR:${target}>
|
||||
COMMENT "Copying DuckDB runtime next to ${target}")
|
||||
endif()
|
||||
endfunction()
|
||||
endif()
|
||||
|
||||
# --- Framework ---
|
||||
# Incluye tokens.cpp (identidad visual Mantine dark + indigo), icon_font.cpp
|
||||
# (Karla/Roboto/... + Tabler), app_settings.cpp (persistencia y ventana de
|
||||
|
||||
Reference in New Issue
Block a user