cmake_minimum_required(VERSION 3.30) project(AppStreamQt VERSION 1.0.5 LANGUAGES CXX) include(GNUInstallDirs) if(NOT APPSTREAM_SOURCE_DIR) message(FATAL_ERROR "Provide the authenticated AppStream source directory") endif() find_package(Qt6 6.11.2 EXACT REQUIRED COMPONENTS Core) find_package(PkgConfig REQUIRED) pkg_check_modules(NATIVE_APPSTREAM REQUIRED IMPORTED_TARGET appstream=1.0.5) pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) include(${CMAKE_CURRENT_LIST_DIR}/source-files.cmake) set(CMAKE_AUTOMOC ON) set(CMAKE_CXX_STANDARD 17) set(AS_MAJOR_VERSION_CONF 1) set(AS_MINOR_VERSION_CONF 0) set(AS_MICRO_VERSION_CONF 5) configure_file(${APPSTREAM_SOURCE_DIR}/qt/version.h.in version.h @ONLY) add_library(AppStreamQt SHARED ${asqt_src} ${asqt_pub_headers} ${asqt_priv_headers}) target_compile_definitions(AppStreamQt PRIVATE QT_NO_KEYWORDS) target_include_directories(AppStreamQt PRIVATE ${APPSTREAM_SOURCE_DIR}/qt # Upstream pool.cpp uses as-pool-private.h for the exported # as_pool_override_cache_locations API in the matching native 1.0.5 core. ${APPSTREAM_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(AppStreamQt PUBLIC Qt6::Core PRIVATE PkgConfig::NATIVE_APPSTREAM PkgConfig::GIO) set_target_properties(AppStreamQt PROPERTIES VERSION 1.0.5 SOVERSION 3 CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN ON) install(TARGETS AppStreamQt LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES ${asqt_pub_headers} ${CMAKE_CURRENT_BINARY_DIR}/version.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/AppStreamQt) set(PREFIX ${CMAKE_INSTALL_PREFIX}) set(LIBDIR ${CMAKE_INSTALL_LIBDIR}) set(LIBDIR_FULL ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) set(VERSION ${PROJECT_VERSION}) foreach(name AppStreamQtConfig AppStreamQtConfigVersion) configure_file(${APPSTREAM_SOURCE_DIR}/qt/cmake/${name}.cmake.in ${name}.cmake @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/AppStreamQt) endforeach()