cmake_minimum_required(VERSION 3.25) project(sonus-consumer LANGUAGES CXX) foreach(dependency miniaudio OpenSSL SQLite3 raylib) set(CMAKE_DISABLE_FIND_PACKAGE_${dependency} TRUE) endforeach() find_package(sonus CONFIG REQUIRED) get_target_property(sonus_links sonus::sonus INTERFACE_LINK_LIBRARIES) if(sonus_links MATCHES "miniaudio|OpenSSL|SQLite|raylib") message(FATAL_ERROR "Sonus exposes a private dependency: ${sonus_links}") endif() foreach(dependency modulus::miniaudio modulus::openssl modulus::sqlite modulus::raylib) if(TARGET ${dependency}) message(FATAL_ERROR "Sonus discovered an unrelated bridge: ${dependency}") endif() endforeach() option(SONUS_TEST_INSTALLED_CONFIG "Check installed Modulus component discovery" OFF) if(SONUS_TEST_INSTALLED_CONFIG) find_package(modulus CONFIG REQUIRED OPTIONAL_COMPONENTS miniaudio unsupported) if(modulus_miniaudio_FOUND OR modulus_unsupported_FOUND) message(FATAL_ERROR "Unavailable optional components must not be found") endif() find_package(modulus CONFIG QUIET COMPONENTS unsupported) if(modulus_FOUND) message(FATAL_ERROR "An unknown required component must reject the package") endif() find_package(modulus CONFIG REQUIRED) endif() add_executable(sonus-consumer main.cpp) target_link_libraries(sonus-consumer PRIVATE sonus::sonus) target_compile_features(sonus-consumer PRIVATE cxx_std_23) enable_testing() add_test(NAME sonus-consumer COMMAND sonus-consumer)