Commit 260286b9 authored by jan.koester's avatar jan.koester
Browse files

test

parent cf288420
Loading
Loading
Loading
Loading
+15 −31
Original line number Diff line number Diff line
# CMake module to search for the C library libyaml
#
# If the library is found, then YAML_FOUND is set to TRUE,
# and following variables are set:
#   YAML_INCLUDE_DIR
#   YAML_LIBRARIES

# 1. Include directory search (remains the same)
# FindYAML.cmake (Final Version)

# 1. Include directory search
find_path(YAML_INCLUDE_DIR NAMES yaml.h)

# 2. Configure library search for static libraries
# Speichern Sie die aktuellen Such-Suffixe
set(ORIGINAL_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})

# Stellen Sie sicher, dass wir nach den statischen Suffixen suchen
# .a fr Unix, .lib fr Windows (bevorzugt)
if (WIN32)
    # Unter Windows suchen wir explizit nach .lib (statisch) vor .dll (dynamisch)
    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
else()
    # Unter Unix/Linux/macOS ist .a das statische Standard-Suffix
    set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
    set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
endif()

# 3. Search for the static library
# HINWEIS: Wir mssen den Prfix 'lib' explizit ausschlieen, damit der Benutzer
# unter Windows nicht 'libyaml.lib' schreiben muss, aber ihn unter Linux
# bercksichtigen. Die standardmigen CMake-Regeln bercksichtigen dies normalerweise.
find_library(YAML_LIBRARIES NAMES yaml libyaml)

# 4. Set Suffixes back to original
set(CMAKE_FIND_LIBRARY_SUFFIXES ${ORIGINAL_CMAKE_FIND_LIBRARY_SUFFIXES})


# 5. Handle standard arguments
# 5. Handle standard arguments (SETZT YAML_FOUND und exportiert es)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(YAML DEFAULT_MSG YAML_LIBRARIES YAML_INCLUDE_DIR)
mark_as_advanced(YAML_INCLUDE_DIR YAML_LIBRARIES)

# 6. Create IMPORTED Target for modern CMake usage

# 6. Create IMPORTED Target (nur wenn YAML_FOUND durch FPHSA gesetzt wurde)
# Verwenden Sie die von FPHSA gesetzte Variable YAML_FOUND
if (YAML_FOUND AND NOT TARGET YAML::YAML)
    add_library(YAML::YAML UNKNOWN IMPORTED)
    set_target_properties(YAML::YAML PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES "${YAML_INCLUDE_DIR}"
        IMPORTED_LOCATION "${YAML_LIBRARIES}"
    )
    # Setzen Sie den Typ auf STATIC, wenn es sich um eine statische Bibliothek handelt
    if (YAML_LIBRARIES MATCHES "\\.a$|\\.lib$")
        set_target_properties(YAML::YAML PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "C")
        set_target_properties(YAML::YAML PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES "")
    endif()
    add_library(YAML::YAML STATIC IMPORTED) 
    set_target_properties(YAML::YAML PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES "${YAML_INCLUDE_DIR}"
        IMPORTED_LOCATION "${YAML_LIBRARIES}"
        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
    )
endif()
 No newline at end of file