cmake_minimum_required(VERSION 3.24) project(EetCpp VERSION 2.0.0 LANGUAGES CXX ) option(EETCPP_BUILD_PLAYGROUND "Build the manual EET v4 Playground CLI" ON) include(CTest) include(CMakePackageConfigHelpers) find_package(Qt6 6.5 REQUIRED COMPONENTS Core Network) find_package(PkgConfig REQUIRED) pkg_check_modules(XMLSEC1 REQUIRED IMPORTED_TARGET xmlsec1) find_path(LIBXML2_INCLUDE_DIR libxml/parser.h HINTS ${CMAKE_PREFIX_PATH}/opt/libxml2/include/libxml2 /opt/homebrew/opt/libxml2/include/libxml2 /usr/local/opt/libxml2/include/libxml2 ) find_library(LIBXML2_LIBRARY NAMES xml2 HINTS ${CMAKE_PREFIX_PATH}/opt/libxml2/lib /opt/homebrew/opt/libxml2/lib /usr/local/opt/libxml2/lib ) if(NOT LIBXML2_INCLUDE_DIR OR NOT LIBXML2_LIBRARY) message(FATAL_ERROR "A libxml2 installation compatible with xmlsec1 is required.") endif() add_library(EetCpp STATIC libEet/eetcpp_global.h libEet/eetv4request.cpp libEet/eetv4request.h libEet/eetv4xml.cpp libEet/eetv4xml.h libEet/eetv4soap.cpp libEet/eetv4soap.h libEet/eetv4signer.cpp libEet/eetv4signer.h libEet/eetv4response.cpp libEet/eetv4response.h libEet/eetv4client.cpp libEet/eetv4client.h libEet/eetca.cpp libEet/eetca.h ) add_library(EetCpp::EetCpp ALIAS EetCpp) target_compile_features(EetCpp PUBLIC cxx_std_17) target_compile_definitions(EetCpp PRIVATE EETCPP_LIBRARY) target_include_directories(EetCpp PUBLIC $ $ PRIVATE ${LIBXML2_INCLUDE_DIR} ) target_link_libraries(EetCpp PUBLIC Qt6::Core Qt6::Network ${LIBXML2_LIBRARY} PkgConfig::XMLSEC1 ) set_target_properties(EetCpp PROPERTIES EXPORT_NAME EetCpp VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) include(GNUInstallDirs) install(TARGETS EetCpp EXPORT EetCppTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(FILES libEet/eetcpp_global.h libEet/eetcpp.h libEet/eetv4request.h libEet/eetv4xml.h libEet/eetv4soap.h libEet/eetv4signer.h libEet/eetv4response.h libEet/eetv4client.h libEet/eetca.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/EetCpp ) configure_package_config_file( eetcpp-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/EetCppConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/EetCpp ) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/EetCppConfigVersion.cmake COMPATIBILITY SameMajorVersion ) install(EXPORT EetCppTargets FILE EetCppTargets.cmake NAMESPACE EetCpp:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/EetCpp ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/EetCppConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/EetCppConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/EetCpp ) if(BUILD_TESTING) add_subdirectory(tests) endif() if(EETCPP_BUILD_PLAYGROUND) add_subdirectory(playground) endif()