Loading cmake/FindINIPARSER.cmake +31 −12 Original line number Diff line number Diff line # iniparser-config.cmake # Unterstützt find_package(INIPARSER) ohne REQUIRED-Flag. # -------------------------------------------------------------------------- # 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks) # -------------------------------------------------------------------------- # --- Definiere plattformspezifische Dateinamen für STATIC Libs --- set(INIPARSER_FOUND FALSE) # Standardmäßig nicht gefunden # --- Definiere plattformspezifische Dateinamen für STATIC Libs (für Windows-Prüfung) --- if (WIN32) set(_INIPARSER_LIB_NAME_STATIC "iniparser-static.lib") set(_INIPARSER_LIB_NAME_STATIC_DEBUG "iniparser-static-d.lib") Loading Loading @@ -41,21 +44,36 @@ endif() # Setze den Include-Pfad (ist i.d.R. immer ${INIPARSER_ROOT}/include) set(INIPARSER_INCLUDE_DIR "${INIPARSER_ROOT}/include") set(INIPARSER_FOUND TRUE) # --- Multiarch-Fix für Unix: Absoluten Bibliothekspfad suchen --- if (NOT WIN32) # 🌟 MULTIARCH FIX: find_library findet den absoluten, Multiarch-fähigen Pfad # zur statischen Bibliothek libiniparser.a. # -------------------------------------------------------------------------- # 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix) # -------------------------------------------------------------------------- if (WIN32) # Windows: Wir gehen davon aus, dass die Dateien unter ${INIPARSER_ROOT}/lib liegen set(INIPARSER_LIBRARY_DIR "${INIPARSER_ROOT}/lib") # Prüfe die Existenz der Release-Bibliothek, um INIPARSER_FOUND zu setzen if (EXISTS "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}") set(INIPARSER_FOUND TRUE) endif() else() # Unix/Linux: Verwende find_library für Multiarch-Unterstützung # Suche die statische Bibliothek; der gefundene Pfad ist ABSOLUT find_library(INIPARSER_LIBRARY NAMES iniparser) if (INIPARSER_LIBRARY) set(INIPARSER_FOUND TRUE) endif() endif() # -------------------------------------------------------------------------- # 2. Erstellen des Namespaced IMPORTED Targets # 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden) # -------------------------------------------------------------------------- if (NOT TARGET iniparser::iniparser) if (NOT TARGET iniparser::iniparser AND INIPARSER_FOUND) add_library(iniparser::iniparser STATIC IMPORTED) set_target_properties(iniparser::iniparser PROPERTIES Loading @@ -65,19 +83,20 @@ if (NOT TARGET iniparser::iniparser) # --- Windows Implementierung (.lib) --- if (WIN32) set(INIPARSER_LIBRARY_DIR "${INIPARSER_ROOT}/lib") # Pfade wurden oben bereits definiert und geprüft set_target_properties(iniparser::iniparser PROPERTIES IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}" IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC_DEBUG}" ) # --- Linux/Unix Implementierung (.a) --- else() # NUTZT den von find_library gefundenen Multiarch-fähigen ABSOLUTEN PFAD # NUTZT den von find_library gefundenen ABSOLUTEN PFAD set_target_properties(iniparser::iniparser PROPERTIES IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY}" IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY}" ) endif() set(INIPARSER_FOUND TRUE) endif() # Verhindert, dass die Variable am Ende des Skripts auf FALSE zurückgesetzt wird set(INIPARSER_LIBRARIES "iniparser::iniparser" CACHE STRING "The INIPARSER library target.") cmake/FindYAML.cmake +37 −13 Original line number Diff line number Diff line # yaml-config.cmake # Unterstützt find_package(YAML) ohne REQUIRED-Flag. # -------------------------------------------------------------------------- # 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks) # -------------------------------------------------------------------------- set(YAML_FOUND FALSE) # Standardmäßig nicht gefunden # --- Definiere plattformspezifische Dateinamen --- if (WIN32) set(_YAML_DLL_NAME "yaml.dll") set(_YAML_IMPLIB_NAME "yaml.lib") endif() if(DEFINED CMAKE_PREFIX_PATH) foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) # Prüfen auf YAML-Header (yaml.h) set(_POTENTIAL_HEADER_FILE "${PREFIX_PATH}/include/yaml.h") if (EXISTS "${_POTENTIAL_HEADER_FILE}") Loading @@ -19,31 +29,45 @@ endif() if(NOT YAML_ROOT) if(DEFINED CMAKE_INSTALL_PREFIX) set(YAML_ROOT "${CMAKE_INSTALL_PREFIX}") # FIX: Füge den UNIX-Standardpfad-Fallback hinzu, um /usr/local/lib Fehler zu verhindern elseif(UNIX) # Behalten Sie den /usr-Fallback bei, um den Include-Pfad zu setzen set(YAML_ROOT "/usr") else() get_filename_component(YAML_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) endif() endif() # Setze den Include-Pfad (ist i.d.R. immer ${YAML_ROOT}/include) # Setze den Include-Pfad set(YAML_INCLUDE_DIR "${YAML_ROOT}/include") set(YAML_FOUND TRUE) # --- Definiere plattformspezifische Pfade und suche auf Unix --- # -------------------------------------------------------------------------- # 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix) # -------------------------------------------------------------------------- if (WIN32) set(_YAML_DLL_NAME "yaml.dll") set(_YAML_IMPLIB_NAME "yaml.lib") # Windows: Wir gehen davon aus, dass die Dateien unter ${YAML_ROOT}/lib liegen set(YAML_LIBRARY_DIR "${YAML_ROOT}/lib") # Prüfe die Existenz der Release-DLL, um YAML_FOUND zu setzen if (EXISTS "${YAML_LIBRARY_DIR}/${_YAML_DLL_NAME}") set(YAML_FOUND TRUE) endif() else() # Unix/Linux: Verwende find_library für Multiarch-Unterstützung find_library(YAML_LIBRARY NAMES yaml) if (YAML_LIBRARY) set(YAML_FOUND TRUE) endif() endif() # -------------------------------------------------------------------------- # 2. Erstellen des Namespaced IMPORTED Targets # 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden) # -------------------------------------------------------------------------- if (NOT TARGET yaml::yaml) if (NOT TARGET yaml::yaml AND YAML_FOUND) add_library(yaml::yaml SHARED IMPORTED) set_target_properties(yaml::yaml PROPERTIES Loading @@ -53,8 +77,7 @@ if (NOT TARGET yaml::yaml) # --- Windows Implementierung (.dll/.lib) --- if (WIN32) # Windows muss weiterhin auf dem konfigurierten Pfad basieren set(YAML_LIBRARY_DIR "${YAML_ROOT}/lib") # Pfade wurden oben bereits definiert und geprüft set_target_properties(yaml::yaml PROPERTIES IMPORTED_LOCATION_RELEASE "${YAML_LIBRARY_DIR}/${_YAML_DLL_NAME}" IMPORTED_IMPLIB_RELEASE "${YAML_LIBRARY_DIR}/${_YAML_IMPLIB_NAME}" Loading @@ -63,12 +86,13 @@ if (NOT TARGET yaml::yaml) ) # --- Linux/Unix Implementierung (.so) --- else() # NUTZT den von find_library gefundenen Multiarch-fähigen ABSOLUTEN PFAD # NUTZT den von find_library gefundenen ABSOLUTEN PFAD (Multiarch-kompatibel) set_target_properties(yaml::yaml PROPERTIES IMPORTED_LOCATION_RELEASE "${YAML_LIBRARY}" IMPORTED_LOCATION_DEBUG "${YAML_LIBRARY}" ) endif() endif() # Verhindert, dass die Variable am Ende des Skripts auf FALSE zurückgesetzt wird set(YAML_LIBRARIES "yaml::yaml" CACHE STRING "The YAML library target.") endif() Loading
cmake/FindINIPARSER.cmake +31 −12 Original line number Diff line number Diff line # iniparser-config.cmake # Unterstützt find_package(INIPARSER) ohne REQUIRED-Flag. # -------------------------------------------------------------------------- # 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks) # -------------------------------------------------------------------------- # --- Definiere plattformspezifische Dateinamen für STATIC Libs --- set(INIPARSER_FOUND FALSE) # Standardmäßig nicht gefunden # --- Definiere plattformspezifische Dateinamen für STATIC Libs (für Windows-Prüfung) --- if (WIN32) set(_INIPARSER_LIB_NAME_STATIC "iniparser-static.lib") set(_INIPARSER_LIB_NAME_STATIC_DEBUG "iniparser-static-d.lib") Loading Loading @@ -41,21 +44,36 @@ endif() # Setze den Include-Pfad (ist i.d.R. immer ${INIPARSER_ROOT}/include) set(INIPARSER_INCLUDE_DIR "${INIPARSER_ROOT}/include") set(INIPARSER_FOUND TRUE) # --- Multiarch-Fix für Unix: Absoluten Bibliothekspfad suchen --- if (NOT WIN32) # 🌟 MULTIARCH FIX: find_library findet den absoluten, Multiarch-fähigen Pfad # zur statischen Bibliothek libiniparser.a. # -------------------------------------------------------------------------- # 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix) # -------------------------------------------------------------------------- if (WIN32) # Windows: Wir gehen davon aus, dass die Dateien unter ${INIPARSER_ROOT}/lib liegen set(INIPARSER_LIBRARY_DIR "${INIPARSER_ROOT}/lib") # Prüfe die Existenz der Release-Bibliothek, um INIPARSER_FOUND zu setzen if (EXISTS "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}") set(INIPARSER_FOUND TRUE) endif() else() # Unix/Linux: Verwende find_library für Multiarch-Unterstützung # Suche die statische Bibliothek; der gefundene Pfad ist ABSOLUT find_library(INIPARSER_LIBRARY NAMES iniparser) if (INIPARSER_LIBRARY) set(INIPARSER_FOUND TRUE) endif() endif() # -------------------------------------------------------------------------- # 2. Erstellen des Namespaced IMPORTED Targets # 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden) # -------------------------------------------------------------------------- if (NOT TARGET iniparser::iniparser) if (NOT TARGET iniparser::iniparser AND INIPARSER_FOUND) add_library(iniparser::iniparser STATIC IMPORTED) set_target_properties(iniparser::iniparser PROPERTIES Loading @@ -65,19 +83,20 @@ if (NOT TARGET iniparser::iniparser) # --- Windows Implementierung (.lib) --- if (WIN32) set(INIPARSER_LIBRARY_DIR "${INIPARSER_ROOT}/lib") # Pfade wurden oben bereits definiert und geprüft set_target_properties(iniparser::iniparser PROPERTIES IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}" IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC_DEBUG}" ) # --- Linux/Unix Implementierung (.a) --- else() # NUTZT den von find_library gefundenen Multiarch-fähigen ABSOLUTEN PFAD # NUTZT den von find_library gefundenen ABSOLUTEN PFAD set_target_properties(iniparser::iniparser PROPERTIES IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY}" IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY}" ) endif() set(INIPARSER_FOUND TRUE) endif() # Verhindert, dass die Variable am Ende des Skripts auf FALSE zurückgesetzt wird set(INIPARSER_LIBRARIES "iniparser::iniparser" CACHE STRING "The INIPARSER library target.")
cmake/FindYAML.cmake +37 −13 Original line number Diff line number Diff line # yaml-config.cmake # Unterstützt find_package(YAML) ohne REQUIRED-Flag. # -------------------------------------------------------------------------- # 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks) # -------------------------------------------------------------------------- set(YAML_FOUND FALSE) # Standardmäßig nicht gefunden # --- Definiere plattformspezifische Dateinamen --- if (WIN32) set(_YAML_DLL_NAME "yaml.dll") set(_YAML_IMPLIB_NAME "yaml.lib") endif() if(DEFINED CMAKE_PREFIX_PATH) foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH}) # Prüfen auf YAML-Header (yaml.h) set(_POTENTIAL_HEADER_FILE "${PREFIX_PATH}/include/yaml.h") if (EXISTS "${_POTENTIAL_HEADER_FILE}") Loading @@ -19,31 +29,45 @@ endif() if(NOT YAML_ROOT) if(DEFINED CMAKE_INSTALL_PREFIX) set(YAML_ROOT "${CMAKE_INSTALL_PREFIX}") # FIX: Füge den UNIX-Standardpfad-Fallback hinzu, um /usr/local/lib Fehler zu verhindern elseif(UNIX) # Behalten Sie den /usr-Fallback bei, um den Include-Pfad zu setzen set(YAML_ROOT "/usr") else() get_filename_component(YAML_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) endif() endif() # Setze den Include-Pfad (ist i.d.R. immer ${YAML_ROOT}/include) # Setze den Include-Pfad set(YAML_INCLUDE_DIR "${YAML_ROOT}/include") set(YAML_FOUND TRUE) # --- Definiere plattformspezifische Pfade und suche auf Unix --- # -------------------------------------------------------------------------- # 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix) # -------------------------------------------------------------------------- if (WIN32) set(_YAML_DLL_NAME "yaml.dll") set(_YAML_IMPLIB_NAME "yaml.lib") # Windows: Wir gehen davon aus, dass die Dateien unter ${YAML_ROOT}/lib liegen set(YAML_LIBRARY_DIR "${YAML_ROOT}/lib") # Prüfe die Existenz der Release-DLL, um YAML_FOUND zu setzen if (EXISTS "${YAML_LIBRARY_DIR}/${_YAML_DLL_NAME}") set(YAML_FOUND TRUE) endif() else() # Unix/Linux: Verwende find_library für Multiarch-Unterstützung find_library(YAML_LIBRARY NAMES yaml) if (YAML_LIBRARY) set(YAML_FOUND TRUE) endif() endif() # -------------------------------------------------------------------------- # 2. Erstellen des Namespaced IMPORTED Targets # 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden) # -------------------------------------------------------------------------- if (NOT TARGET yaml::yaml) if (NOT TARGET yaml::yaml AND YAML_FOUND) add_library(yaml::yaml SHARED IMPORTED) set_target_properties(yaml::yaml PROPERTIES Loading @@ -53,8 +77,7 @@ if (NOT TARGET yaml::yaml) # --- Windows Implementierung (.dll/.lib) --- if (WIN32) # Windows muss weiterhin auf dem konfigurierten Pfad basieren set(YAML_LIBRARY_DIR "${YAML_ROOT}/lib") # Pfade wurden oben bereits definiert und geprüft set_target_properties(yaml::yaml PROPERTIES IMPORTED_LOCATION_RELEASE "${YAML_LIBRARY_DIR}/${_YAML_DLL_NAME}" IMPORTED_IMPLIB_RELEASE "${YAML_LIBRARY_DIR}/${_YAML_IMPLIB_NAME}" Loading @@ -63,12 +86,13 @@ if (NOT TARGET yaml::yaml) ) # --- Linux/Unix Implementierung (.so) --- else() # NUTZT den von find_library gefundenen Multiarch-fähigen ABSOLUTEN PFAD # NUTZT den von find_library gefundenen ABSOLUTEN PFAD (Multiarch-kompatibel) set_target_properties(yaml::yaml PROPERTIES IMPORTED_LOCATION_RELEASE "${YAML_LIBRARY}" IMPORTED_LOCATION_DEBUG "${YAML_LIBRARY}" ) endif() endif() # Verhindert, dass die Variable am Ende des Skripts auf FALSE zurückgesetzt wird set(YAML_LIBRARIES "yaml::yaml" CACHE STRING "The YAML library target.") endif()