Files
sonus/test_package/CMakeLists.txt
T
khodowany b58664d5f4
publish / publish (push) Successful in 14m29s
Cleanup
2026-09-10 09:22:15 -05:00

36 lines
1.4 KiB
CMake

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)