cmake_minimum_required(VERSION 3.15) set(tinyxml2_known_comps static shared) set(tinyxml2_comp_static NO) set(tinyxml2_comp_shared NO) foreach (tinyxml2_comp IN LISTS ${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS) if (tinyxml2_comp IN_LIST tinyxml2_known_comps) set(tinyxml2_comp_${tinyxml2_comp} YES) else () set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "tinyxml2 does not recognize component `${tinyxml2_comp}`.") set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE) return() endif () endforeach () if (tinyxml2_comp_static AND tinyxml2_comp_shared) set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "tinyxml2 `static` and `shared` components are mutually exclusive.") set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE) return() endif () set(tinyxml2_static_targets "${CMAKE_CURRENT_LIST_DIR}/tinyxml2-static-targets.cmake") set(tinyxml2_shared_targets "${CMAKE_CURRENT_LIST_DIR}/tinyxml2-shared-targets.cmake") macro(tinyxml2_load_targets type) if (NOT EXISTS "${tinyxml2_${type}_targets}") set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "tinyxml2 `${type}` libraries were requested but not found.") set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE) return() endif () include("${tinyxml2_${type}_targets}") endmacro() if (tinyxml2_comp_static) tinyxml2_load_targets(static) elseif (tinyxml2_comp_shared) tinyxml2_load_targets(shared) elseif (DEFINED tinyxml2_SHARED_LIBS AND tinyxml2_SHARED_LIBS) tinyxml2_load_targets(shared) elseif (DEFINED tinyxml2_SHARED_LIBS AND NOT tinyxml2_SHARED_LIBS) tinyxml2_load_targets(static) elseif (BUILD_SHARED_LIBS) if (EXISTS "${tinyxml2_shared_targets}") tinyxml2_load_targets(shared) else () tinyxml2_load_targets(static) endif () else () if (EXISTS "${tinyxml2_static_targets}") tinyxml2_load_targets(static) else () tinyxml2_load_targets(shared) endif () endif ()