Files
EetCpp/CMakeLists.txt
T

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()