Commit ccbef9a7 authored by jan.koester's avatar jan.koester
Browse files

test

parent ddb1c488
Loading
Loading
Loading
Loading
+34 −32
Original line number Diff line number Diff line
@@ -4,62 +4,64 @@
# 1. Definieren der Pfadvariablen (Simulieren der Installationslogik)
# --------------------------------------------------------------------------

# Setze YAML_ROOT basierend auf dem Pfad dieser Datei, um die Installation zu finden
# CMAKE_CURRENT_LIST_DIR ist der Ordner, in dem diese Datei liegt. 
# Gehe zwei Ebenen hoch, um zum Installations-Präfix zu gelangen (z.B. /install/lib/cmake/yaml/ -> /install)
if(DEFINED CMAKE_PREFIX_PATH)
    list(GET CMAKE_PREFIX_PATH 0 YAML_ROOT) # Nimm den ersten Pfad in der Liste
    list(GET CMAKE_PREFIX_PATH 0 YAML_ROOT)
elseif(DEFINED CMAKE_INSTALL_PREFIX)
    set(YAML_ROOT "${CMAKE_INSTALL_PREFIX}")
else()
    # Fallback zur Berechnung basierend auf dem Speicherort dieser Datei
    get_filename_component(YAML_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
endif()

# Setze die Variablen, die von der installierten libyaml erwartet werden
# Dies sind nur Beispiele; Sie müssen die tatsächlichen Pfade in Ihrer Umgebung prüfen!
set(YAML_INCLUDE_DIR "${YAML_ROOT}/include")
set(YAML_LIBRARY_DIR "${YAML_ROOT}/lib")

# Stellen Sie sicher, dass die Variablen gesetzt sind, bevor Sie sie verwenden
set(YAML_FOUND TRUE)

# --- Definiere plattformspezifische Dateinamen ---
if (WIN32)
    # Windows: .dll (Runtime) und .lib (Import Library)
    set(_YAML_DLL_NAME "yaml.dll")
    set(_YAML_IMPLIB_NAME "yaml.lib")
else()
    # Linux/Unix: .so (Shared Object)
    set(_YAML_SO_NAME "libyaml.so")
endif()

# --------------------------------------------------------------------------
# 2. Erstellen des Namespaced IMPORTED Targets
# --------------------------------------------------------------------------

# Definieren des Namensraum-Targets, wie in der CMakeLists.txt gewünscht
if (NOT TARGET yaml::yaml)
    # Da es sich um eine C-Bibliothek handelt, definieren wir sie als Shared (DLL/SO)
    add_library(yaml::yaml SHARED IMPORTED)

    # --- WICHTIG: Schnittstellen-Include-Pfade definieren ---
    # Dadurch wird 'iniparser/iniparser.h' gefunden
    # WICHTIG: Setze explizit die Konfigurationen und Include-Pfade
    set_target_properties(yaml::yaml PROPERTIES
        IMPORTED_CONFIGURATIONS "Release;Debug" # Behebt den CMP0111 Warnung/Fehler
        INTERFACE_INCLUDE_DIRECTORIES "${YAML_INCLUDE_DIR}"
    )

    # --- WICHTIG: Speicherorte der Binärdateien definieren ---
    # Die tatsächlichen Namen können je nach System (Windows/Linux) und Compiler variieren.
    # Hier wird das Standard-Muster für Windows-Installationen angenommen:
    
    # Release Konfiguration (für dynamisches Linken unter Windows)
    # --- Windows Implementierung (.dll/.lib) ---
    if (WIN32)
        set_target_properties(yaml::yaml PROPERTIES
        IMPORTED_LOCATION_RELEASE "${YAML_LIBRARY_DIR}/yaml.dll" 
        IMPORTED_IMPLIB_RELEASE "${YAML_LIBRARY_DIR}/yaml.lib"
        IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "" # Keine weiteren Abhängigkeiten für die Schnittstelle
            # Release Konfiguration
            IMPORTED_LOCATION_RELEASE "${YAML_LIBRARY_DIR}/${_YAML_DLL_NAME}"
            IMPORTED_IMPLIB_RELEASE "${YAML_LIBRARY_DIR}/${_YAML_IMPLIB_NAME}"
            # Debug Konfiguration (angenommener Name mit '-d' Suffix)
            IMPORTED_LOCATION_DEBUG "${YAML_LIBRARY_DIR}/yaml-d.dll"
            IMPORTED_IMPLIB_DEBUG "${YAML_LIBRARY_DIR}/yaml-d.lib"
        )
    # --- Linux/Unix Implementierung (.so) ---
    else()
        # Release Konfiguration (libyaml.so)
        set_target_properties(yaml::yaml PROPERTIES
            IMPORTED_LOCATION_RELEASE "${YAML_LIBRARY_DIR}/${_YAML_SO_NAME}"
        )

    # Optional: Debug Konfiguration
    if (EXISTS "${YAML_LIBRARY_DIR}/yaml-d.dll")
        # Debug Konfiguration: Setzen Sie einen Wert, um den 'missing location' Fehler zu vermeiden.
        # Im Zweifel den gleichen Pfad wie Release verwenden, wenn keine separate Debug-Datei existiert.
        set_target_properties(yaml::yaml PROPERTIES
            IMPORTED_LOCATION_DEBUG "${YAML_LIBRARY_DIR}/yaml-d.dll" 
            IMPORTED_IMPLIB_DEBUG "${YAML_LIBRARY_DIR}/yaml-d.lib"
            IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG ""
            IMPORTED_LOCATION_DEBUG "${YAML_LIBRARY_DIR}/${_YAML_SO_NAME}"
        )
    endif()

    # Optional: Setze die globale YAML_LIBRARIES Variable für Legacy-Code
    set(YAML_LIBRARIES "yaml::yaml" CACHE STRING "The YAML library target.")
    
endif()