Add libxml++5.0 link on cmake
This commit is contained in:
parent
77c1b81e95
commit
f1ac4222e1
2 changed files with 61 additions and 3 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -24,4 +24,9 @@ examples/output
|
||||||
lib__cmake_cxx23.a
|
lib__cmake_cxx23.a
|
||||||
liblarra_xmpp.a
|
liblarra_xmpp.a
|
||||||
liblarra_xmpp.so
|
liblarra_xmpp.so
|
||||||
|
CPackConfig.cmake
|
||||||
|
CPackSourceConfig.cmake
|
||||||
|
ext/
|
||||||
|
libxmlplusplus-prefix/
|
||||||
|
spdlog.pc
|
||||||
build*
|
build*
|
||||||
|
|
|
@ -36,7 +36,7 @@ find_package(OpenSSL REQUIRED)
|
||||||
|
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
|
|
||||||
pkg_check_modules(GTKMM gtkmm-4.0)
|
pkg_check_modules(GTKMM gtkmm-4.0 REQUIRED)
|
||||||
|
|
||||||
link_directories(
|
link_directories(
|
||||||
${GTKMM_LIBRARY_DIRS} )
|
${GTKMM_LIBRARY_DIRS} )
|
||||||
|
@ -75,7 +75,60 @@ CPMAddPackage(
|
||||||
)
|
)
|
||||||
set(CPM_USE_LOCAL_PACKAGES ${TMP})
|
set(CPM_USE_LOCAL_PACKAGES ${TMP})
|
||||||
|
|
||||||
|
pkg_check_modules(xmlplusplus libxml++-5.0)
|
||||||
|
|
||||||
|
if(xmlplusplus_FOUND)
|
||||||
|
|
||||||
|
add_library(xmlplusplus INTERFACE EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
|
target_include_directories(xmlplusplus INTERFACE ${xmlplusplus_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(xmlplusplus INTERFACE ${xmlplusplus_LINK_LIBRARIES})
|
||||||
|
|
||||||
|
install(TARGETS xmlplusplus
|
||||||
|
EXPORT larraXMPPTargets)
|
||||||
|
|
||||||
|
else()
|
||||||
|
include(ExternalProject)
|
||||||
|
|
||||||
|
find_program(Meson_EXECUTABLE meson)
|
||||||
|
if(NOT Meson_EXECUTABLE)
|
||||||
|
message(FATAL_ERROR "Meson is required!")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_program(Ninja_EXECUTABLE ninja)
|
||||||
|
if(NOT Ninja_EXECUTABLE)
|
||||||
|
message(FATAL_ERROR "Ninja is required!")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
set(XMLPLUSPLUS "libxmlplusplus")
|
||||||
|
|
||||||
|
set(XMLPLUSPLUS_INSTALL_PREFIX
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/ext/${XMLPLUSPLUS}")
|
||||||
|
|
||||||
|
ExternalProject_Add(${XMLPLUSPLUS}
|
||||||
|
URL https://github.com/libxmlplusplus/libxmlplusplus/releases/download/5.4.0/libxml++-5.4.0.tar.xz
|
||||||
|
INSTALL_DIR ${XMLPLUSPLUS_INSTALL_PREFIX}
|
||||||
|
CONFIGURE_COMMAND env C=${CMAKE_C_COMPILER} CC=${CMAKE_CXX_COMPILER}
|
||||||
|
${Meson_EXECUTABLE} -Ddefault_library=static --prefix=<INSTALL_DIR> <BINARY_DIR> <SOURCE_DIR>
|
||||||
|
CONFIGURE_HANDLED_BY_BUILD ON
|
||||||
|
BUILD_COMMAND ${Ninja_EXECUTABLE} -C <BINARY_DIR>
|
||||||
|
INSTALL_COMMAND ${Ninja_EXECUTABLE} -C <BINARY_DIR> install
|
||||||
|
BUILD_BYPRODUCTS
|
||||||
|
${XMLPLUSPLUS_INSTALL_PREFIX}/lib64/libxml++-5.0.${CMAKE_STATIC_LIBRARY_SUFFIX_CPP}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(xmlplusplus STATIC IMPORTED GLOBAL)
|
||||||
|
add_dependencies(xmlplusplus ${XMLPLUSPLUS})
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
xmlplusplus
|
||||||
|
PROPERTIES IMPORTED_LOCATION
|
||||||
|
${XMLPLUSPLUS_INSTALL_PREFIX}/lib64/libxml++-5.0.${CMAKE_STATIC_LIBRARY_SUFFIX_CPP}
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${XMLPLUSPLUS_INSTALL_PREFIX}/include
|
||||||
|
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${XMLPLUSPLUS_INSTALL_PREFIX}/include)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
cmake_policy(SET CMP0079 NEW)
|
cmake_policy(SET CMP0079 NEW)
|
||||||
|
@ -103,12 +156,12 @@ target_include_directories(larra_xmpp PUBLIC
|
||||||
if(TARGET Boost::pfr)
|
if(TARGET Boost::pfr)
|
||||||
target_link_libraries(larra_xmpp PUBLIC
|
target_link_libraries(larra_xmpp PUBLIC
|
||||||
Boost::asio Boost::serialization utempl::utempl pugixml::pugixml OpenSSL::SSL
|
Boost::asio Boost::serialization utempl::utempl pugixml::pugixml OpenSSL::SSL
|
||||||
OpenSSL::Crypto spdlog)
|
OpenSSL::Crypto spdlog xmlplusplus)
|
||||||
else()
|
else()
|
||||||
find_package(Boost 1.85.0 REQUIRED)
|
find_package(Boost 1.85.0 REQUIRED)
|
||||||
target_link_libraries(larra_xmpp PUBLIC
|
target_link_libraries(larra_xmpp PUBLIC
|
||||||
utempl::utempl ${Boost_LIBRARIES} pugixml::pugixml OpenSSL::SSL
|
utempl::utempl ${Boost_LIBRARIES} pugixml::pugixml OpenSSL::SSL
|
||||||
OpenSSL::Crypto spdlog)
|
OpenSSL::Crypto spdlog xmlplusplus)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue