Loading CMakeLists.txt +2 −0 Original line number Diff line number Diff line cmake_minimum_required(VERSION 3.18) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" PARENT_SCOPE) include(GenerateExportHeader) project(dbpp) Loading backends/CMakeLists.txt +27 −60 Original line number Diff line number Diff line Loading @@ -6,28 +6,6 @@ endif() find_package(PostgreSQL) if(${PostgreSQL_FOUND}) if(NOT TARGET PostgreSQL::pq) get_filename_component(POSTGRESQL_LIB_DIR "${PostgreSQL_LIBRARIES}" DIRECTORY) get_filename_component(POSTGRESQL_BIN_DIR "${POSTGRESQL_LIB_DIR}/../bin" ABSOLUTE) set(POSTGRESQL_BIN_DIR_DEBUG "${POSTGRESQL_BIN_DIR}") message(STATUS "POSTGRESQL_BIN_DIR: ${POSTGRESQL_BIN_DIR}") add_library(PostgreSQL::pq SHARED IMPORTED) set_target_properties(PostgreSQL::pq PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${PostgreSQL_INCLUDE_DIRS}" ) set_target_properties(PostgreSQL::pq PROPERTIES IMPORTED_LOCATION "${PostgreSQL_LIBRARIES}" IMPORTED_IMPLIB "${PostgreSQL_LIBRARIES}" IMPORTED_LOCATION_RELEASE "${PostgreSQL_BIN_DIR}/libpq.dll" IMPORTED_LOCATION_DEBUG "${POSTGRESQL_BIN_DIR_DEBUG}/libpq.dll" ) endif() add_library(pgsql SHARED pgsql/pgsql.cpp) target_include_directories(pgsql PRIVATE Loading Loading @@ -56,22 +34,7 @@ if(${PostgreSQL_FOUND}) endif() find_package(SQLite3 ) if(${SQLite3_FOUND}) if(NOT TARGET SQLite3::sqlite3) add_library(SQLite3::sqlite3 SHARED IMPORTED GLOBAL) # .lib (meist was SQLite3_LIBRARIES liefert) set(_sqlite3_implib "${SQLite3_LIBRARIES}") get_filename_component(_libdir "${_sqlite3_implib}" DIRECTORY) # .../lib get_filename_component(_triproot "${_libdir}" DIRECTORY) # .../<triplet> set(_sqlite3_dll "${_triproot}/bin/sqlite3.dll") # vcpkg-Layout set_target_properties(SQLite3::sqlite3 PROPERTIES IMPORTED_IMPLIB "${_sqlite3_implib}" IMPORTED_LOCATION "${_sqlite3_dll}" INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIRS}" ) endif() if(SQLite3_FOUND) add_library(sqlite SHARED sqlite/sqlite.cpp) Loading @@ -84,17 +47,21 @@ find_package(SQLite3 ) message(STATUS "SQLite3_LIBRARIES: ${SQLite3_LIBRARIES}") target_link_libraries(sqlite PUBLIC dbpp PRIVATE SQLite3::sqlite3) # KORREKTUR: Verwenden Sie den korrekten, kleingeschriebenen Target-Namen target_link_libraries(sqlite PUBLIC dbpp PRIVATE sqlite3::sqlite3) set_target_properties(sqlite PROPERTIES PREFIX "") # Installation des sqlite-Moduls set(DESTDIR "lib/confplus/backend") # Setzen Sie DESTDIR hier auf den finalen Pfad install(TARGETS sqlite DESTINATION ${DESTDIR} RUNTIME_DEPENDENCY_SET sqlitedep) # Windows-Installationslogik für Abhängigkeiten (korrekt) if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Windows") install( RUNTIME_DEPENDENCY_SET sqlitedep DIRECTORIES "$<TARGET_FILE_DIR:SQLite3::sqlite3>" "$<TARGET_FILE_DIR:sqlite3::sqlite3>" # KORREKTUR: Kleingeschriebener Target-Name DESTINATION ${DESTDIR} PRE_EXCLUDE_REGEXES "((api|ext)-ms-.*|.*azureattest.*|vcruntime.*|ucrtbase.*|msvcrt.*|wpaxholder.*)\\.dll" POST_EXCLUDE_REGEXES [[.*(\\|/)system32(\\|/).*\.dll]] Loading cmake/findPostgreSQL.cmake 0 → 100644 +104 −0 Original line number Diff line number Diff line # postgresql-config.cmake # Unterstützt find_package(PostgreSQL) ohne REQUIRED-Flag. # -------------------------------------------------------------------------- # 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks) # -------------------------------------------------------------------------- set(POSTGRESQL_FOUND FALSE) # Standardmäßig nicht gefunden # Definiere den Header-Namen für die Suche set(_POSTGRESQL_HEADER_FILE "libpq-fe.h") # Definiere plattformspezifische Dateinamen (libpq ist oft shared) if (WIN32) set(_POSTGRESQL_LIB_NAME_SHARED "libpq.dll") set(_POSTGRESQL_IMPLIB_NAME "libpq.lib") else() # Auf Unix wird find_library verwendet, der Name ist nur für die Prefix-Prüfung set(_POSTGRESQL_LIB_NAME_SHARED "libpq.so") endif() if(DEFINED CMAKE_PREFIX_PATH) foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) set(_POTENTIAL_INCLUDE_DIR "${PREFIX_PATH}/include") # Prüfe auf den Include-Pfad (der Header ist entscheidend) if (EXISTS "${_POTENTIAL_INCLUDE_DIR}/${_POSTGRESQL_HEADER_FILE}") set(POSTGRESQL_ROOT "${PREFIX_PATH}") message(STATUS "postgresql-config: Found POSTGRESQL_ROOT at ${POSTGRESQL_ROOT}") break() endif() endforeach() endif() if(NOT POSTGRESQL_ROOT) if(DEFINED CMAKE_INSTALL_PREFIX) set(POSTGRESQL_ROOT "${CMAKE_INSTALL_PREFIX}") # FIX: Füge den UNIX-Standardpfad-Fallback hinzu elseif(UNIX) set(POSTGRESQL_ROOT "/usr") else() get_filename_component(POSTGRESQL_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) endif() endif() # Setze den Include-Pfad (libpq Header sind direkt unter include/) set(POSTGRESQL_INCLUDE_DIR "${POSTGRESQL_ROOT}/include") # -------------------------------------------------------------------------- # 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix) # -------------------------------------------------------------------------- if (WIN32) set(POSTGRESQL_LIBRARY_DIR "${POSTGRESQL_ROOT}/lib") # Prüfe die Existenz der Import Library if (EXISTS "${POSTGRESQL_LIBRARY_DIR}/${_POSTGRESQL_IMPLIB_NAME}") set(POSTGRESQL_FOUND TRUE) endif() else() # Unix/Linux: find_library sucht nach libpq.so (Multiarch-kompatibel) # Verwende 'pq' als Namen, um die Suche zu vereinfachen find_library(POSTGRESQL_LIBRARY NAMES pq) if (POSTGRESQL_LIBRARY) set(POSTGRESQL_FOUND TRUE) endif() endif() # -------------------------------------------------------------------------- # 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden) # -------------------------------------------------------------------------- if (NOT TARGET PostgreSQL::pq AND POSTGRESQL_FOUND) add_library(PostgreSQL::pq SHARED IMPORTED) set_target_properties(PostgreSQL::pq PROPERTIES IMPORTED_CONFIGURATIONS "Release;Debug" INTERFACE_INCLUDE_DIRECTORIES "${POSTGRESQL_INCLUDE_DIR}" ) # --- Windows Implementierung (.dll/.lib) --- if (WIN32) # Annahme: DLL und LIB liegen im selben Verzeichnis (Standard bei VCPKG/Installer) set_target_properties(PostgreSQL::pq PROPERTIES IMPORTED_IMPLIB_RELEASE "${POSTGRESQL_LIBRARY_DIR}/${_POSTGRESQL_IMPLIB_NAME}" IMPORTED_LOCATION_RELEASE "${POSTGRESQL_LIBRARY_DIR}/${_POSTGRESQL_LIB_NAME_SHARED}" # Implizite Annahme für Debug-Namen IMPORTED_IMPLIB_DEBUG "${POSTGRESQL_LIBRARY_DIR}/libpqd.lib" IMPORTED_LOCATION_DEBUG "${POSTGRESQL_LIBRARY_DIR}/libpqd.dll" ) # --- Linux/Unix Implementierung (.so) --- else() # NUTZT den von find_library gefundenen ABSOLUTEN PFAD set_target_properties(PostgreSQL::pq PROPERTIES IMPORTED_LOCATION_RELEASE "${POSTGRESQL_LIBRARY}" IMPORTED_LOCATION_DEBUG "${POSTGRESQL_LIBRARY}" ) endif() endif() set(PostgreSQL_LIBRARIES "PostgreSQL::pq" CACHE STRING "The PostgreSQL client library target.") cmake/findSQLite3.cmake 0 → 100644 +100 −0 Original line number Diff line number Diff line # sqlite3-config.cmake # Unterstützt find_package(SQLite3) ohne REQUIRED-Flag. # -------------------------------------------------------------------------- # 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks) # -------------------------------------------------------------------------- set(SQLITE3_FOUND FALSE) # Standardmäßig nicht gefunden # Definiere den Header-Namen für die Suche set(_SQLITE3_HEADER_FILE "sqlite3.h") # Definiere plattformspezifische Dateinamen für STATIC Libs (für die Prefix-Prüfung) if (WIN32) set(_SQLITE3_LIB_NAME_STATIC "sqlite3.lib") else() set(_SQLITE3_LIB_NAME_STATIC "libsqlite3.a") endif() if(DEFINED CMAKE_PREFIX_PATH) foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) set(_POTENTIAL_INCLUDE_DIR "${PREFIX_PATH}/include") set(_POTENTIAL_LIB_FILE "${PREFIX_PATH}/lib/${_SQLITE3_LIB_NAME_STATIC}") # Verwende AND, um sicherzustellen, dass sowohl Header als auch Bibliothek existieren if (EXISTS "${_POTENTIAL_INCLUDE_DIR}/${_SQLITE3_HEADER_FILE}" AND EXISTS "${_POTENTIAL_LIB_FILE}") set(SQLITE3_ROOT "${PREFIX_PATH}") message(STATUS "sqlite3-config: Found SQLITE3_ROOT at ${SQLITE3_ROOT}") break() endif() endforeach() endif() if(NOT SQLITE3_ROOT) if(DEFINED CMAKE_INSTALL_PREFIX) set(SQLITE3_ROOT "${CMAKE_INSTALL_PREFIX}") # FIX: Füge den UNIX-Standardpfad-Fallback hinzu, um /usr/local/lib Fehler zu verhindern elseif(UNIX) set(SQLITE3_ROOT "/usr") else() get_filename_component(SQLITE3_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) endif() endif() # Setze den Include-Pfad set(SQLITE3_INCLUDE_DIR "${SQLITE3_ROOT}/include") # -------------------------------------------------------------------------- # 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix) # -------------------------------------------------------------------------- if (WIN32) set(SQLITE3_LIBRARY_DIR "${SQLITE3_ROOT}/lib") # Prüfe die Existenz der Release-Bibliothek if (EXISTS "${SQLITE3_LIBRARY_DIR}/${_SQLITE3_LIB_NAME_STATIC}") set(SQLITE3_FOUND TRUE) endif() else() # Unix/Linux: find_library sucht nach libsqlite3.a und libsqlite3.so in Multiarch-Pfaden find_library(SQLITE3_LIBRARY NAMES sqlite3) if (SQLITE3_LIBRARY) set(SQLITE3_FOUND TRUE) endif() endif() # -------------------------------------------------------------------------- # 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden) # -------------------------------------------------------------------------- if (NOT TARGET sqlite3::sqlite3 AND SQLITE3_FOUND) # UNKNOWN erlaubt es, dass die Bibliothek statisch oder shared sein kann add_library(sqlite3::sqlite3 UNKNOWN IMPORTED) set_target_properties(sqlite3::sqlite3 PROPERTIES IMPORTED_CONFIGURATIONS "Release;Debug" INTERFACE_INCLUDE_DIRECTORIES "${SQLITE3_INCLUDE_DIR}" ) # --- Windows Implementierung (.lib) --- if (WIN32) # Annahme: Debug-Bibliothek heißt sqlite3d.lib set_target_properties(sqlite3::sqlite3 PROPERTIES IMPORTED_LOCATION_RELEASE "${SQLITE3_LIBRARY_DIR}/${_SQLITE3_LIB_NAME_STATIC}" IMPORTED_LOCATION_DEBUG "${SQLITE3_LIBRARY_DIR}/sqlite3d.lib" ) # --- Linux/Unix Implementierung (.a/.so) --- else() # NUTZT den von find_library gefundenen ABSOLUTEN PFAD set_target_properties(sqlite3::sqlite3 PROPERTIES IMPORTED_LOCATION_RELEASE "${SQLITE3_LIBRARY}" IMPORTED_LOCATION_DEBUG "${SQLITE3_LIBRARY}" ) endif() endif() set(SQLITE3_LIBRARIES "sqlite3::sqlite3" CACHE STRING "The SQLITE3 library target.") Loading
CMakeLists.txt +2 −0 Original line number Diff line number Diff line cmake_minimum_required(VERSION 3.18) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" PARENT_SCOPE) include(GenerateExportHeader) project(dbpp) Loading
backends/CMakeLists.txt +27 −60 Original line number Diff line number Diff line Loading @@ -6,28 +6,6 @@ endif() find_package(PostgreSQL) if(${PostgreSQL_FOUND}) if(NOT TARGET PostgreSQL::pq) get_filename_component(POSTGRESQL_LIB_DIR "${PostgreSQL_LIBRARIES}" DIRECTORY) get_filename_component(POSTGRESQL_BIN_DIR "${POSTGRESQL_LIB_DIR}/../bin" ABSOLUTE) set(POSTGRESQL_BIN_DIR_DEBUG "${POSTGRESQL_BIN_DIR}") message(STATUS "POSTGRESQL_BIN_DIR: ${POSTGRESQL_BIN_DIR}") add_library(PostgreSQL::pq SHARED IMPORTED) set_target_properties(PostgreSQL::pq PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${PostgreSQL_INCLUDE_DIRS}" ) set_target_properties(PostgreSQL::pq PROPERTIES IMPORTED_LOCATION "${PostgreSQL_LIBRARIES}" IMPORTED_IMPLIB "${PostgreSQL_LIBRARIES}" IMPORTED_LOCATION_RELEASE "${PostgreSQL_BIN_DIR}/libpq.dll" IMPORTED_LOCATION_DEBUG "${POSTGRESQL_BIN_DIR_DEBUG}/libpq.dll" ) endif() add_library(pgsql SHARED pgsql/pgsql.cpp) target_include_directories(pgsql PRIVATE Loading Loading @@ -56,22 +34,7 @@ if(${PostgreSQL_FOUND}) endif() find_package(SQLite3 ) if(${SQLite3_FOUND}) if(NOT TARGET SQLite3::sqlite3) add_library(SQLite3::sqlite3 SHARED IMPORTED GLOBAL) # .lib (meist was SQLite3_LIBRARIES liefert) set(_sqlite3_implib "${SQLite3_LIBRARIES}") get_filename_component(_libdir "${_sqlite3_implib}" DIRECTORY) # .../lib get_filename_component(_triproot "${_libdir}" DIRECTORY) # .../<triplet> set(_sqlite3_dll "${_triproot}/bin/sqlite3.dll") # vcpkg-Layout set_target_properties(SQLite3::sqlite3 PROPERTIES IMPORTED_IMPLIB "${_sqlite3_implib}" IMPORTED_LOCATION "${_sqlite3_dll}" INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIRS}" ) endif() if(SQLite3_FOUND) add_library(sqlite SHARED sqlite/sqlite.cpp) Loading @@ -84,17 +47,21 @@ find_package(SQLite3 ) message(STATUS "SQLite3_LIBRARIES: ${SQLite3_LIBRARIES}") target_link_libraries(sqlite PUBLIC dbpp PRIVATE SQLite3::sqlite3) # KORREKTUR: Verwenden Sie den korrekten, kleingeschriebenen Target-Namen target_link_libraries(sqlite PUBLIC dbpp PRIVATE sqlite3::sqlite3) set_target_properties(sqlite PROPERTIES PREFIX "") # Installation des sqlite-Moduls set(DESTDIR "lib/confplus/backend") # Setzen Sie DESTDIR hier auf den finalen Pfad install(TARGETS sqlite DESTINATION ${DESTDIR} RUNTIME_DEPENDENCY_SET sqlitedep) # Windows-Installationslogik für Abhängigkeiten (korrekt) if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Windows") install( RUNTIME_DEPENDENCY_SET sqlitedep DIRECTORIES "$<TARGET_FILE_DIR:SQLite3::sqlite3>" "$<TARGET_FILE_DIR:sqlite3::sqlite3>" # KORREKTUR: Kleingeschriebener Target-Name DESTINATION ${DESTDIR} PRE_EXCLUDE_REGEXES "((api|ext)-ms-.*|.*azureattest.*|vcruntime.*|ucrtbase.*|msvcrt.*|wpaxholder.*)\\.dll" POST_EXCLUDE_REGEXES [[.*(\\|/)system32(\\|/).*\.dll]] Loading
cmake/findPostgreSQL.cmake 0 → 100644 +104 −0 Original line number Diff line number Diff line # postgresql-config.cmake # Unterstützt find_package(PostgreSQL) ohne REQUIRED-Flag. # -------------------------------------------------------------------------- # 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks) # -------------------------------------------------------------------------- set(POSTGRESQL_FOUND FALSE) # Standardmäßig nicht gefunden # Definiere den Header-Namen für die Suche set(_POSTGRESQL_HEADER_FILE "libpq-fe.h") # Definiere plattformspezifische Dateinamen (libpq ist oft shared) if (WIN32) set(_POSTGRESQL_LIB_NAME_SHARED "libpq.dll") set(_POSTGRESQL_IMPLIB_NAME "libpq.lib") else() # Auf Unix wird find_library verwendet, der Name ist nur für die Prefix-Prüfung set(_POSTGRESQL_LIB_NAME_SHARED "libpq.so") endif() if(DEFINED CMAKE_PREFIX_PATH) foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) set(_POTENTIAL_INCLUDE_DIR "${PREFIX_PATH}/include") # Prüfe auf den Include-Pfad (der Header ist entscheidend) if (EXISTS "${_POTENTIAL_INCLUDE_DIR}/${_POSTGRESQL_HEADER_FILE}") set(POSTGRESQL_ROOT "${PREFIX_PATH}") message(STATUS "postgresql-config: Found POSTGRESQL_ROOT at ${POSTGRESQL_ROOT}") break() endif() endforeach() endif() if(NOT POSTGRESQL_ROOT) if(DEFINED CMAKE_INSTALL_PREFIX) set(POSTGRESQL_ROOT "${CMAKE_INSTALL_PREFIX}") # FIX: Füge den UNIX-Standardpfad-Fallback hinzu elseif(UNIX) set(POSTGRESQL_ROOT "/usr") else() get_filename_component(POSTGRESQL_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) endif() endif() # Setze den Include-Pfad (libpq Header sind direkt unter include/) set(POSTGRESQL_INCLUDE_DIR "${POSTGRESQL_ROOT}/include") # -------------------------------------------------------------------------- # 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix) # -------------------------------------------------------------------------- if (WIN32) set(POSTGRESQL_LIBRARY_DIR "${POSTGRESQL_ROOT}/lib") # Prüfe die Existenz der Import Library if (EXISTS "${POSTGRESQL_LIBRARY_DIR}/${_POSTGRESQL_IMPLIB_NAME}") set(POSTGRESQL_FOUND TRUE) endif() else() # Unix/Linux: find_library sucht nach libpq.so (Multiarch-kompatibel) # Verwende 'pq' als Namen, um die Suche zu vereinfachen find_library(POSTGRESQL_LIBRARY NAMES pq) if (POSTGRESQL_LIBRARY) set(POSTGRESQL_FOUND TRUE) endif() endif() # -------------------------------------------------------------------------- # 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden) # -------------------------------------------------------------------------- if (NOT TARGET PostgreSQL::pq AND POSTGRESQL_FOUND) add_library(PostgreSQL::pq SHARED IMPORTED) set_target_properties(PostgreSQL::pq PROPERTIES IMPORTED_CONFIGURATIONS "Release;Debug" INTERFACE_INCLUDE_DIRECTORIES "${POSTGRESQL_INCLUDE_DIR}" ) # --- Windows Implementierung (.dll/.lib) --- if (WIN32) # Annahme: DLL und LIB liegen im selben Verzeichnis (Standard bei VCPKG/Installer) set_target_properties(PostgreSQL::pq PROPERTIES IMPORTED_IMPLIB_RELEASE "${POSTGRESQL_LIBRARY_DIR}/${_POSTGRESQL_IMPLIB_NAME}" IMPORTED_LOCATION_RELEASE "${POSTGRESQL_LIBRARY_DIR}/${_POSTGRESQL_LIB_NAME_SHARED}" # Implizite Annahme für Debug-Namen IMPORTED_IMPLIB_DEBUG "${POSTGRESQL_LIBRARY_DIR}/libpqd.lib" IMPORTED_LOCATION_DEBUG "${POSTGRESQL_LIBRARY_DIR}/libpqd.dll" ) # --- Linux/Unix Implementierung (.so) --- else() # NUTZT den von find_library gefundenen ABSOLUTEN PFAD set_target_properties(PostgreSQL::pq PROPERTIES IMPORTED_LOCATION_RELEASE "${POSTGRESQL_LIBRARY}" IMPORTED_LOCATION_DEBUG "${POSTGRESQL_LIBRARY}" ) endif() endif() set(PostgreSQL_LIBRARIES "PostgreSQL::pq" CACHE STRING "The PostgreSQL client library target.")
cmake/findSQLite3.cmake 0 → 100644 +100 −0 Original line number Diff line number Diff line # sqlite3-config.cmake # Unterstützt find_package(SQLite3) ohne REQUIRED-Flag. # -------------------------------------------------------------------------- # 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks) # -------------------------------------------------------------------------- set(SQLITE3_FOUND FALSE) # Standardmäßig nicht gefunden # Definiere den Header-Namen für die Suche set(_SQLITE3_HEADER_FILE "sqlite3.h") # Definiere plattformspezifische Dateinamen für STATIC Libs (für die Prefix-Prüfung) if (WIN32) set(_SQLITE3_LIB_NAME_STATIC "sqlite3.lib") else() set(_SQLITE3_LIB_NAME_STATIC "libsqlite3.a") endif() if(DEFINED CMAKE_PREFIX_PATH) foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) set(_POTENTIAL_INCLUDE_DIR "${PREFIX_PATH}/include") set(_POTENTIAL_LIB_FILE "${PREFIX_PATH}/lib/${_SQLITE3_LIB_NAME_STATIC}") # Verwende AND, um sicherzustellen, dass sowohl Header als auch Bibliothek existieren if (EXISTS "${_POTENTIAL_INCLUDE_DIR}/${_SQLITE3_HEADER_FILE}" AND EXISTS "${_POTENTIAL_LIB_FILE}") set(SQLITE3_ROOT "${PREFIX_PATH}") message(STATUS "sqlite3-config: Found SQLITE3_ROOT at ${SQLITE3_ROOT}") break() endif() endforeach() endif() if(NOT SQLITE3_ROOT) if(DEFINED CMAKE_INSTALL_PREFIX) set(SQLITE3_ROOT "${CMAKE_INSTALL_PREFIX}") # FIX: Füge den UNIX-Standardpfad-Fallback hinzu, um /usr/local/lib Fehler zu verhindern elseif(UNIX) set(SQLITE3_ROOT "/usr") else() get_filename_component(SQLITE3_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) endif() endif() # Setze den Include-Pfad set(SQLITE3_INCLUDE_DIR "${SQLITE3_ROOT}/include") # -------------------------------------------------------------------------- # 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix) # -------------------------------------------------------------------------- if (WIN32) set(SQLITE3_LIBRARY_DIR "${SQLITE3_ROOT}/lib") # Prüfe die Existenz der Release-Bibliothek if (EXISTS "${SQLITE3_LIBRARY_DIR}/${_SQLITE3_LIB_NAME_STATIC}") set(SQLITE3_FOUND TRUE) endif() else() # Unix/Linux: find_library sucht nach libsqlite3.a und libsqlite3.so in Multiarch-Pfaden find_library(SQLITE3_LIBRARY NAMES sqlite3) if (SQLITE3_LIBRARY) set(SQLITE3_FOUND TRUE) endif() endif() # -------------------------------------------------------------------------- # 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden) # -------------------------------------------------------------------------- if (NOT TARGET sqlite3::sqlite3 AND SQLITE3_FOUND) # UNKNOWN erlaubt es, dass die Bibliothek statisch oder shared sein kann add_library(sqlite3::sqlite3 UNKNOWN IMPORTED) set_target_properties(sqlite3::sqlite3 PROPERTIES IMPORTED_CONFIGURATIONS "Release;Debug" INTERFACE_INCLUDE_DIRECTORIES "${SQLITE3_INCLUDE_DIR}" ) # --- Windows Implementierung (.lib) --- if (WIN32) # Annahme: Debug-Bibliothek heißt sqlite3d.lib set_target_properties(sqlite3::sqlite3 PROPERTIES IMPORTED_LOCATION_RELEASE "${SQLITE3_LIBRARY_DIR}/${_SQLITE3_LIB_NAME_STATIC}" IMPORTED_LOCATION_DEBUG "${SQLITE3_LIBRARY_DIR}/sqlite3d.lib" ) # --- Linux/Unix Implementierung (.a/.so) --- else() # NUTZT den von find_library gefundenen ABSOLUTEN PFAD set_target_properties(sqlite3::sqlite3 PROPERTIES IMPORTED_LOCATION_RELEASE "${SQLITE3_LIBRARY}" IMPORTED_LOCATION_DEBUG "${SQLITE3_LIBRARY}" ) endif() endif() set(SQLITE3_LIBRARIES "sqlite3::sqlite3" CACHE STRING "The SQLITE3 library target.")