Loading cmake/FindYAML.cmake +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 Loading
cmake/FindYAML.cmake +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