set(_q "")
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
    set(_q QUIET)
    set(_quietly TRUE)
endif()
find_package(${CMAKE_FIND_PACKAGE_NAME} ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION} CONFIG ${_q})

if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FOUND)
    # Fall-back solution to find the Cereal serialization library header file
    include(CheckIncludeFileCXX)
    add_library(cereal INTERFACE)
    target_include_directories(cereal INTERFACE include)

    if (_quietly)
        set(CMAKE_REQUIRED_QUIET ON)
    endif()
    CHECK_INCLUDE_FILE_CXX("cereal/cereal.hpp" HAVE_CEREAL_H)

    if (NOT HAVE_CEREAL_H)
        if (${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
            message(FATAL_ERROR "Cereal library not found. Please install the dependency.")
        elseif(NOT _quietly)
            message(WARNING "Cereal library not found.")
        endif()
    endif ()
endif()