Loading cmake/Findyaml.cmake 0 → 100644 +58 −0 Original line number Diff line number Diff line # libyaml (C) finden – mehrere Strategien # 1) CONFIG-Paket (z.B. vcpkg) -> liefert Ziel yaml::yaml find_package(yaml CONFIG QUIET) if(yaml_FOUND) message(STATUS "Found libyaml via CONFIG: yaml::yaml") set(LIBYAML_TARGET yaml::yaml) else() # 2) pkg-config (linux/msys, evtl. auch Windows mit pkg-config) find_package(PkgConfig QUIET) if(PkgConfig_FOUND) pkg_check_modules(LIBYAML QUIET yaml-0.1) endif() if(LIBYAML_FOUND) message(STATUS "Found libyaml via pkg-config: ${LIBYAML_VERSION}") add_library(libyaml_pkg INTERFACE) target_include_directories(libyaml_pkg INTERFACE ${LIBYAML_INCLUDE_DIRS}) target_link_libraries(libyaml_pkg INTERFACE ${LIBYAML_LIBRARIES}) set(LIBYAML_TARGET libyaml_pkg) else() # 3) Fallback: klassisch suchen find_path(LIBYAML_INCLUDE_DIR yaml.h HINTS $ENV{LIBYAML_ROOT} ${CMAKE_PREFIX_PATH}) find_library(LIBYAML_LIBRARY NAMES yaml libyaml HINTS $ENV{LIBYAML_ROOT} ${CMAKE_PREFIX_PATH}) if(LIBYAML_INCLUDE_DIR AND LIBYAML_LIBRARY) message(STATUS "Found libyaml via classic search: ${LIBYAML_LIBRARY}") add_library(libyaml_manual INTERFACE) target_include_directories(libyaml_manual INTERFACE ${LIBYAML_INCLUDE_DIR}) target_link_libraries(libyaml_manual INTERFACE ${LIBYAML_LIBRARY}) set(LIBYAML_TARGET libyaml_manual) else() message(FATAL_ERROR "libyaml (C) nicht gefunden. \ Setze CMAKE_PREFIX_PATH/Libpfade oder installiere das Paket (yaml/libyaml).") endif() endif() endif() # Dein Target add_library(yamlconf SHARED yaml/yamlconf.cpp) add_dependencies(yamlconf confplus) set_target_properties(yamlconf PROPERTIES PREFIX "" OUTPUT_NAME yaml) # Nur definieren, wenn statisch gegen libyaml gelinkt wird: # target_compile_definitions(yamlconf PRIVATE YAML_DECLARE_STATIC) # Includes ggf. ergänzen: # target_include_directories(yamlconf PRIVATE ${YAML_INCLUDE_DIRS}) # Linken: verwende das ermittelte LIBYAML_TARGET statt YAML::YAML if(WIN32) target_link_libraries(yamlconf PUBLIC confplus PRIVATE ${LIBYAML_TARGET}) else() target_link_libraries(yamlconf PUBLIC confplus PRIVATE ${LIBYAML_TARGET} dl) endif() install(TARGETS yamlconf RUNTIME DESTINATION bin LIBRARY DESTINATION lib/confplus/backend) Loading
cmake/Findyaml.cmake 0 → 100644 +58 −0 Original line number Diff line number Diff line # libyaml (C) finden – mehrere Strategien # 1) CONFIG-Paket (z.B. vcpkg) -> liefert Ziel yaml::yaml find_package(yaml CONFIG QUIET) if(yaml_FOUND) message(STATUS "Found libyaml via CONFIG: yaml::yaml") set(LIBYAML_TARGET yaml::yaml) else() # 2) pkg-config (linux/msys, evtl. auch Windows mit pkg-config) find_package(PkgConfig QUIET) if(PkgConfig_FOUND) pkg_check_modules(LIBYAML QUIET yaml-0.1) endif() if(LIBYAML_FOUND) message(STATUS "Found libyaml via pkg-config: ${LIBYAML_VERSION}") add_library(libyaml_pkg INTERFACE) target_include_directories(libyaml_pkg INTERFACE ${LIBYAML_INCLUDE_DIRS}) target_link_libraries(libyaml_pkg INTERFACE ${LIBYAML_LIBRARIES}) set(LIBYAML_TARGET libyaml_pkg) else() # 3) Fallback: klassisch suchen find_path(LIBYAML_INCLUDE_DIR yaml.h HINTS $ENV{LIBYAML_ROOT} ${CMAKE_PREFIX_PATH}) find_library(LIBYAML_LIBRARY NAMES yaml libyaml HINTS $ENV{LIBYAML_ROOT} ${CMAKE_PREFIX_PATH}) if(LIBYAML_INCLUDE_DIR AND LIBYAML_LIBRARY) message(STATUS "Found libyaml via classic search: ${LIBYAML_LIBRARY}") add_library(libyaml_manual INTERFACE) target_include_directories(libyaml_manual INTERFACE ${LIBYAML_INCLUDE_DIR}) target_link_libraries(libyaml_manual INTERFACE ${LIBYAML_LIBRARY}) set(LIBYAML_TARGET libyaml_manual) else() message(FATAL_ERROR "libyaml (C) nicht gefunden. \ Setze CMAKE_PREFIX_PATH/Libpfade oder installiere das Paket (yaml/libyaml).") endif() endif() endif() # Dein Target add_library(yamlconf SHARED yaml/yamlconf.cpp) add_dependencies(yamlconf confplus) set_target_properties(yamlconf PROPERTIES PREFIX "" OUTPUT_NAME yaml) # Nur definieren, wenn statisch gegen libyaml gelinkt wird: # target_compile_definitions(yamlconf PRIVATE YAML_DECLARE_STATIC) # Includes ggf. ergänzen: # target_include_directories(yamlconf PRIVATE ${YAML_INCLUDE_DIRS}) # Linken: verwende das ermittelte LIBYAML_TARGET statt YAML::YAML if(WIN32) target_link_libraries(yamlconf PUBLIC confplus PRIVATE ${LIBYAML_TARGET}) else() target_link_libraries(yamlconf PUBLIC confplus PRIVATE ${LIBYAML_TARGET} dl) endif() install(TARGETS yamlconf RUNTIME DESTINATION bin LIBRARY DESTINATION lib/confplus/backend)