Loading cmake/FindINIPARSER.cmake +51 −16 Original line number Diff line number Diff line Loading @@ -4,8 +4,32 @@ # 1. Definieren der Pfadvariablen (Simulieren der Installationslogik) # -------------------------------------------------------------------------- # --- Definiere plattformspezifische Dateinamen für STATIC Libs --- if (WIN32) # Windows: Statische Bibliothek (typischerweise iniparser-static.lib) set(_INIPARSER_LIB_NAME_STATIC "iniparser-static.lib") set(_INIPARSER_LIB_NAME_STATIC_DEBUG "iniparser-static-d.lib") else() # Linux/Unix: Statische Bibliothek (.a) set(_INIPARSER_LIB_NAME_STATIC "libiniparser.a") endif() if(DEFINED CMAKE_PREFIX_PATH) list(GET CMAKE_PREFIX_PATH 0 INIPARSER_ROOT) # Nimm den ersten Pfad in der Liste foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) # Setze den potenziellen Include-Pfad (z.B. /usr/include) set(_POTENTIAL_INCLUDE_DIR "${PREFIX_PATH}/include") # Setze den potenziellen Bibliotheks-Pfad (Verwende den Linux-Namen als primäre Prüfung, kann angepasst werden) set(_POTENTIAL_LIB_FILE "${PREFIX_PATH}/lib/${_INIPARSER_LIB_NAME_STATIC}") # Prüfe, ob die benötigte Header-Datei ODER die Bibliothek in diesem Pfad existiert if (EXISTS "${_POTENTIAL_INCLUDE_DIR}/iniparser/iniparser.h" OR EXISTS "${_POTENTIAL_LIB_FILE}") # Wenn gefunden, setze diesen Pfad als das endgültige INIPARSER_ROOT set(INIPARSER_ROOT "${PREFIX_PATH}") message(STATUS "iniparser-config: Found INIPARSER_ROOT at ${INIPARSER_ROOT}") break() # Beende die Schleife, da der Pfad gefunden wurde endif() endforeach() elseif(DEFINED CMAKE_INSTALL_PREFIX) set(INIPARSER_ROOT "${CMAKE_INSTALL_PREFIX}") else() Loading @@ -14,32 +38,43 @@ else() endif() # Setze die Variablen, die von der installierten iniparser erwartet werden # Die Header liegen oft direkt in <prefix>/include set(INIPARSER_INCLUDE_DIR "${INIPARSER_ROOT}/include") set(INIPARSER_LIBRARY_DIR "${INIPARSER_ROOT}/lib") # -------------------------------------------------------------------------- # 2. Erstellen des Namespaced IMPORTED Targets # 2. Erstellen des Namespaced IMPORTED Targets (Cross-Platform) # -------------------------------------------------------------------------- # Definieren des Targets mit Namensraum (iniparser::iniparser) if (NOT TARGET iniparser::iniparser) # iniparser ist typischerweise eine C-Bibliothek, hier als STATIC importiert add_library(iniparser::iniparser STATIC IMPORTED) # --- WICHTIG: Schnittstellen-Include-Pfade definieren --- # Dadurch wird der Header-Pfad automatisch an abhängige Targets weitergegeben. set_target_properties(iniparser::iniparser PROPERTIES # Hinzugefügt: Fügt unterstützte Konfigurationen hinzu, um Warnungen zu vermeiden IMPORTED_CONFIGURATIONS "Release;Debug" # Schnittstellen-Include-Pfade definieren INTERFACE_INCLUDE_DIRECTORIES "${INIPARSER_INCLUDE_DIR}" ) # --- WICHTIG: Speicherorte der Binärdateien definieren --- # Release Konfiguration (Der tatsächliche Link-Name in vcpkg/Installation ist oft 'iniparser-static') # --- Windows Implementierung (.lib) --- if (WIN32) set_target_properties(iniparser::iniparser PROPERTIES # Release Konfiguration IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}" # Debug Konfiguration (Annahme: Debug-Bibliotheken haben ein Suffix) IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC_DEBUG}" ) # --- Linux/Unix Implementierung (.a) --- else() set_target_properties(iniparser::iniparser PROPERTIES # Setze den tatsächlichen Speicherort der statischen Bibliothek IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY_DIR}/iniparser-static.lib" # Release Konfiguration (libiniparser.a) IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}" # Debug Konfiguration: Oft derselbe Pfad für statische Bibliotheken IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}" ) endif() # Setze INIPARSER_FOUND set(INIPARSER_FOUND TRUE) Loading cmake/FindYAML.cmake +17 −2 Original line number Diff line number Diff line Loading @@ -5,11 +5,26 @@ # -------------------------------------------------------------------------- if(DEFINED CMAKE_PREFIX_PATH) list(GET CMAKE_PREFIX_PATH 0 YAML_ROOT) foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) # Setze den potenziellen Include-Pfad (z.B. /usr/include) set(_POTENTIAL_INCLUDE_DIR "${PREFIX_PATH}/include") # Setze den potenziellen Bibliotheks-Pfad (z.B. /usr/lib/libiniparser.a) set(_POTENTIAL_LIB_FILE "${PREFIX_PATH}/lib/libiniparser.a") # Oder der tatsächliche Dateiname # Prüfe, ob die benötigte Header-Datei ODER die Bibliothek in diesem Pfad existiert if (EXISTS "${_POTENTIAL_INCLUDE_DIR}/iniparser/iniparser.h" OR EXISTS "${_POTENTIAL_LIB_FILE}") # Wenn gefunden, setze diesen Pfad als das endgültige INIPARSER_ROOT set(YAML_ROOT "${PREFIX_PATH}") message(STATUS "yaml-config: Found YAML_ROOT at ${YAML_ROOT}") break() # Beende die Schleife, da der Pfad gefunden wurde endif() endforeach() elseif(DEFINED CMAKE_INSTALL_PREFIX) set(YAML_ROOT "${CMAKE_INSTALL_PREFIX}") else() get_filename_component(YAML_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) # Fallback zur Berechnung basierend auf dem Speicherort dieser Datei get_filename_component(INIPARSER_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) endif() set(YAML_INCLUDE_DIR "${YAML_ROOT}/include") Loading Loading
cmake/FindINIPARSER.cmake +51 −16 Original line number Diff line number Diff line Loading @@ -4,8 +4,32 @@ # 1. Definieren der Pfadvariablen (Simulieren der Installationslogik) # -------------------------------------------------------------------------- # --- Definiere plattformspezifische Dateinamen für STATIC Libs --- if (WIN32) # Windows: Statische Bibliothek (typischerweise iniparser-static.lib) set(_INIPARSER_LIB_NAME_STATIC "iniparser-static.lib") set(_INIPARSER_LIB_NAME_STATIC_DEBUG "iniparser-static-d.lib") else() # Linux/Unix: Statische Bibliothek (.a) set(_INIPARSER_LIB_NAME_STATIC "libiniparser.a") endif() if(DEFINED CMAKE_PREFIX_PATH) list(GET CMAKE_PREFIX_PATH 0 INIPARSER_ROOT) # Nimm den ersten Pfad in der Liste foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) # Setze den potenziellen Include-Pfad (z.B. /usr/include) set(_POTENTIAL_INCLUDE_DIR "${PREFIX_PATH}/include") # Setze den potenziellen Bibliotheks-Pfad (Verwende den Linux-Namen als primäre Prüfung, kann angepasst werden) set(_POTENTIAL_LIB_FILE "${PREFIX_PATH}/lib/${_INIPARSER_LIB_NAME_STATIC}") # Prüfe, ob die benötigte Header-Datei ODER die Bibliothek in diesem Pfad existiert if (EXISTS "${_POTENTIAL_INCLUDE_DIR}/iniparser/iniparser.h" OR EXISTS "${_POTENTIAL_LIB_FILE}") # Wenn gefunden, setze diesen Pfad als das endgültige INIPARSER_ROOT set(INIPARSER_ROOT "${PREFIX_PATH}") message(STATUS "iniparser-config: Found INIPARSER_ROOT at ${INIPARSER_ROOT}") break() # Beende die Schleife, da der Pfad gefunden wurde endif() endforeach() elseif(DEFINED CMAKE_INSTALL_PREFIX) set(INIPARSER_ROOT "${CMAKE_INSTALL_PREFIX}") else() Loading @@ -14,32 +38,43 @@ else() endif() # Setze die Variablen, die von der installierten iniparser erwartet werden # Die Header liegen oft direkt in <prefix>/include set(INIPARSER_INCLUDE_DIR "${INIPARSER_ROOT}/include") set(INIPARSER_LIBRARY_DIR "${INIPARSER_ROOT}/lib") # -------------------------------------------------------------------------- # 2. Erstellen des Namespaced IMPORTED Targets # 2. Erstellen des Namespaced IMPORTED Targets (Cross-Platform) # -------------------------------------------------------------------------- # Definieren des Targets mit Namensraum (iniparser::iniparser) if (NOT TARGET iniparser::iniparser) # iniparser ist typischerweise eine C-Bibliothek, hier als STATIC importiert add_library(iniparser::iniparser STATIC IMPORTED) # --- WICHTIG: Schnittstellen-Include-Pfade definieren --- # Dadurch wird der Header-Pfad automatisch an abhängige Targets weitergegeben. set_target_properties(iniparser::iniparser PROPERTIES # Hinzugefügt: Fügt unterstützte Konfigurationen hinzu, um Warnungen zu vermeiden IMPORTED_CONFIGURATIONS "Release;Debug" # Schnittstellen-Include-Pfade definieren INTERFACE_INCLUDE_DIRECTORIES "${INIPARSER_INCLUDE_DIR}" ) # --- WICHTIG: Speicherorte der Binärdateien definieren --- # Release Konfiguration (Der tatsächliche Link-Name in vcpkg/Installation ist oft 'iniparser-static') # --- Windows Implementierung (.lib) --- if (WIN32) set_target_properties(iniparser::iniparser PROPERTIES # Release Konfiguration IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}" # Debug Konfiguration (Annahme: Debug-Bibliotheken haben ein Suffix) IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC_DEBUG}" ) # --- Linux/Unix Implementierung (.a) --- else() set_target_properties(iniparser::iniparser PROPERTIES # Setze den tatsächlichen Speicherort der statischen Bibliothek IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY_DIR}/iniparser-static.lib" # Release Konfiguration (libiniparser.a) IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}" # Debug Konfiguration: Oft derselbe Pfad für statische Bibliotheken IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}" ) endif() # Setze INIPARSER_FOUND set(INIPARSER_FOUND TRUE) Loading
cmake/FindYAML.cmake +17 −2 Original line number Diff line number Diff line Loading @@ -5,11 +5,26 @@ # -------------------------------------------------------------------------- if(DEFINED CMAKE_PREFIX_PATH) list(GET CMAKE_PREFIX_PATH 0 YAML_ROOT) foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) # Setze den potenziellen Include-Pfad (z.B. /usr/include) set(_POTENTIAL_INCLUDE_DIR "${PREFIX_PATH}/include") # Setze den potenziellen Bibliotheks-Pfad (z.B. /usr/lib/libiniparser.a) set(_POTENTIAL_LIB_FILE "${PREFIX_PATH}/lib/libiniparser.a") # Oder der tatsächliche Dateiname # Prüfe, ob die benötigte Header-Datei ODER die Bibliothek in diesem Pfad existiert if (EXISTS "${_POTENTIAL_INCLUDE_DIR}/iniparser/iniparser.h" OR EXISTS "${_POTENTIAL_LIB_FILE}") # Wenn gefunden, setze diesen Pfad als das endgültige INIPARSER_ROOT set(YAML_ROOT "${PREFIX_PATH}") message(STATUS "yaml-config: Found YAML_ROOT at ${YAML_ROOT}") break() # Beende die Schleife, da der Pfad gefunden wurde endif() endforeach() elseif(DEFINED CMAKE_INSTALL_PREFIX) set(YAML_ROOT "${CMAKE_INSTALL_PREFIX}") else() get_filename_component(YAML_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) # Fallback zur Berechnung basierend auf dem Speicherort dieser Datei get_filename_component(INIPARSER_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) endif() set(YAML_INCLUDE_DIR "${YAML_ROOT}/include") Loading