Commit 209393e1 authored by jan.koester's avatar jan.koester
Browse files

test

parent ccbef9a7
Loading
Loading
Loading
Loading
+51 −16
Original line number Diff line number Diff line
@@ -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()
@@ -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)
+17 −2
Original line number Diff line number Diff line
@@ -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")