# SQLite3: el target SQLite::SQLite3 lo crea ya cpp/CMakeLists.txt (sistema en # Linux, vendored amalgamation en Windows). Si esta app se construye en # stand-alone, levantar SQLite desde el amalgamation vendoreado del registry. find_package(SQLite3 QUIET) if(NOT SQLite3_FOUND AND NOT TARGET sqlite3_vendored) set(SQLITE3_AMALG_DIR ${FN_CPP_ROOT_DIR}/vendor/sqlite3) add_library(sqlite3_vendored STATIC ${SQLITE3_AMALG_DIR}/sqlite3.c) target_include_directories(sqlite3_vendored PUBLIC ${SQLITE3_AMALG_DIR}) target_compile_definitions(sqlite3_vendored PRIVATE SQLITE_THREADSAFE=1 SQLITE_ENABLE_FTS5 SQLITE_ENABLE_JSON1 ) add_library(SQLite::SQLite3 ALIAS sqlite3_vendored) endif() add_imgui_app(graph_explorer main.cpp data.cpp views.cpp views_jobs.cpp types_registry.cpp layout_store.cpp entity_ops.cpp project_manager.cpp node_groups.cpp jobs.cpp enrichers.cpp agent.cpp extract_panel.cpp # --- viz --- ${FN_CPP_ROOT_DIR}/functions/viz/graph_renderer.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_force_layout.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_force_layout_gpu.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_layouts.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_viewport.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_viewport_selection.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_labels.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_labels_select.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_icons.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_sources.cpp ${FN_CPP_ROOT_DIR}/functions/viz/graph_types.cpp ${FN_CPP_ROOT_DIR}/functions/core/graph_spatial_hash.cpp # --- core UI --- ${FN_CPP_ROOT_DIR}/functions/core/button.cpp ${FN_CPP_ROOT_DIR}/functions/core/icon_button.cpp ${FN_CPP_ROOT_DIR}/functions/core/toolbar.cpp ${FN_CPP_ROOT_DIR}/functions/core/modal_dialog.cpp ${FN_CPP_ROOT_DIR}/functions/core/text_input.cpp ${FN_CPP_ROOT_DIR}/functions/core/select.cpp ${FN_CPP_ROOT_DIR}/functions/core/tree_view.cpp ${FN_CPP_ROOT_DIR}/functions/core/page_header.cpp ${FN_CPP_ROOT_DIR}/functions/core/fullscreen_window.cpp ${FN_CPP_ROOT_DIR}/functions/core/badge.cpp ${FN_CPP_ROOT_DIR}/functions/core/empty_state.cpp ) target_include_directories(graph_explorer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${FN_CPP_ROOT_DIR}/functions ) target_link_libraries(graph_explorer PRIVATE SQLite::SQLite3 DuckDB::DuckDB fn_module_data_table) duckdb_copy_runtime(graph_explorer) # Threads — issue 0026 (jobs system) usa std::thread + std::mutex + condvar. find_package(Threads REQUIRED) target_link_libraries(graph_explorer PRIVATE Threads::Threads) # OpenGL: graph_renderer + graph_force_layout_gpu llaman gl* directamente. # fn::run_app inicializa el loader cuando AppConfig::init_gl_loader = true. if(NOT WIN32) find_package(OpenGL REQUIRED) target_link_libraries(graph_explorer PRIVATE OpenGL::GL) endif() if(WIN32) set_target_properties(graph_explorer PROPERTIES WIN32_EXECUTABLE TRUE) endif()