125 lines
3.1 KiB
CMake
125 lines
3.1 KiB
CMake
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
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libEet>
|
|
$<INSTALL_INTERFACE:include/EetCpp>
|
|
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()
|