aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorKitsune Ral <Kitsune-Ral@users.sf.net>2018-03-31 20:29:02 +0900
committerKitsune Ral <Kitsune-Ral@users.sf.net>2018-03-31 20:29:56 +0900
commita62bc225b8b4c714e7943aad69d84704a03b8015 (patch)
treedf5ff6f4cf878ecd74c14ea41a1d27a46055b415 /CMakeLists.txt
parent9d8900197e69e9c0ffaaff6f63a40cb80cf08fb1 (diff)
parent6a61d3a127db1e253821bfb2ebb7f433bd534c4a (diff)
downloadlibquotient-a62bc225b8b4c714e7943aad69d84704a03b8015.tar.gz
libquotient-a62bc225b8b4c714e7943aad69d84704a03b8015.zip
Merge branch 'kitsune-install-target'
Closes #113.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt132
1 files changed, 95 insertions, 37 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 82ab2b55..956c9a1f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,9 +3,10 @@ cmake_minimum_required(VERSION 3.1)
project(qmatrixclient CXX)
include(CheckCXXCompilerFlag)
+if (NOT WIN32)
+ include(GNUInstallDirs)
+endif(NOT WIN32)
-# Find includes in corresponding build directories
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
@@ -18,6 +19,18 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
"MinSizeRel" "RelWithDebInfo")
endif()
+if (NOT CMAKE_INSTALL_LIBDIR)
+ set(CMAKE_INSTALL_LIBDIR ".")
+endif()
+
+if (NOT CMAKE_INSTALL_BINDIR)
+ set(CMAKE_INSTALL_BINDIR ".")
+endif()
+
+if (NOT CMAKE_INSTALL_INCLUDEDIR)
+ set(CMAKE_INSTALL_INCLUDEDIR "include")
+endif()
+
set(CMAKE_CXX_STANDARD 14)
foreach (FLAG all "" pedantic extra error=return-type no-unused-parameter no-gnu-zero-variadic-macro-arguments)
@@ -44,49 +57,94 @@ message( STATUS )
# Set up source files
set(libqmatrixclient_SRCS
- networkaccessmanager.cpp
- connectiondata.cpp
- connection.cpp
- logging.cpp
- room.cpp
- user.cpp
- avatar.cpp
- settings.cpp
- networksettings.cpp
- events/event.cpp
- events/eventcontent.cpp
- events/roommessageevent.cpp
- events/roommemberevent.cpp
- events/roomavatarevent.cpp
- events/typingevent.cpp
- events/receiptevent.cpp
- events/directchatevent.cpp
- jobs/requestdata.cpp
- jobs/basejob.cpp
- jobs/checkauthmethods.cpp
- jobs/sendeventjob.cpp
- jobs/setroomstatejob.cpp
- jobs/joinroomjob.cpp
- jobs/roommessagesjob.cpp
- jobs/syncjob.cpp
- jobs/mediathumbnailjob.cpp
- jobs/downloadfilejob.cpp
+ lib/networkaccessmanager.cpp
+ lib/connectiondata.cpp
+ lib/connection.cpp
+ lib/logging.cpp
+ lib/room.cpp
+ lib/user.cpp
+ lib/avatar.cpp
+ lib/settings.cpp
+ lib/networksettings.cpp
+ lib/events/event.cpp
+ lib/events/eventcontent.cpp
+ lib/events/roommessageevent.cpp
+ lib/events/roommemberevent.cpp
+ lib/events/roomavatarevent.cpp
+ lib/events/typingevent.cpp
+ lib/events/receiptevent.cpp
+ lib/events/directchatevent.cpp
+ lib/jobs/requestdata.cpp
+ lib/jobs/basejob.cpp
+ lib/jobs/checkauthmethods.cpp
+ lib/jobs/sendeventjob.cpp
+ lib/jobs/setroomstatejob.cpp
+ lib/jobs/joinroomjob.cpp
+ lib/jobs/roommessagesjob.cpp
+ lib/jobs/syncjob.cpp
+ lib/jobs/mediathumbnailjob.cpp
+ lib/jobs/downloadfilejob.cpp
)
-aux_source_directory(jobs/generated libqmatrixclient_job_SRCS)
+aux_source_directory(lib/jobs/generated libqmatrixclient_job_SRCS)
set(example_SRCS examples/qmc-example.cpp)
-add_library(qmatrixclient ${libqmatrixclient_SRCS} ${libqmatrixclient_job_SRCS})
-set_property(TARGET qmatrixclient PROPERTY VERSION "0.2.0")
-set_property(TARGET qmatrixclient PROPERTY SOVERSION 0 )
+add_library(QMatrixClient ${libqmatrixclient_SRCS} ${libqmatrixclient_job_SRCS})
+set(API_VERSION 2)
+set_property(TARGET QMatrixClient PROPERTY VERSION "0.2.0")
+set_property(TARGET QMatrixClient PROPERTY SOVERSION 0 )
+set_property(TARGET QMatrixClient PROPERTY
+ INTERFACE_QMatrixClient_MAJOR_VERSION ${API_VERSION})
+set_property(TARGET QMatrixClient APPEND PROPERTY
+ COMPATIBLE_INTERFACE_STRING QMatrixClient_MAJOR_VERSION)
-target_link_libraries(qmatrixclient Qt5::Core Qt5::Network Qt5::Gui)
+target_include_directories(QMatrixClient PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+)
+target_link_libraries(QMatrixClient Qt5::Core Qt5::Network Qt5::Gui)
add_executable(qmc-example ${example_SRCS})
-target_link_libraries(qmc-example Qt5::Core qmatrixclient)
+target_link_libraries(qmc-example Qt5::Core QMatrixClient)
+
+# Installation
+
+install(TARGETS QMatrixClient EXPORT QMatrixClientTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+)
+install(DIRECTORY lib/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ FILES_MATCHING PATTERN "*.h")
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/QMatrixClient/QMatrixClientConfigVersion.cmake"
+ VERSION ${API_VERSION}
+ COMPATIBILITY AnyNewerVersion
+)
+
+export(PACKAGE QMatrixClient)
+export(EXPORT QMatrixClientTargets
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/QMatrixClient/QMatrixClientTargets.cmake")
+configure_file(cmake/QMatrixClientConfig.cmake
+ "${CMAKE_CURRENT_BINARY_DIR}/QMatrixClient/QMatrixClientConfig.cmake"
+ COPYONLY
+)
+
+set(ConfigFilesLocation "${CMAKE_INSTALL_LIBDIR}/cmake/QMatrixClient")
+install(EXPORT QMatrixClientTargets
+ FILE QMatrixClientTargets.cmake DESTINATION ${ConfigFilesLocation})
+
+install(FILES cmake/QMatrixClientConfig.cmake
+ "${CMAKE_CURRENT_BINARY_DIR}/QMatrixClient/QMatrixClientConfigVersion.cmake"
+ DESTINATION ${ConfigFilesLocation}
+)
+install(EXPORT_ANDROID_MK QMatrixClientTargets DESTINATION share/ndk-modules)
if (WIN32)
- install (FILES mime/packages/freedesktop.org.xml
- DESTINATION mime/packages)
+ install(FILES mime/packages/freedesktop.org.xml DESTINATION mime/packages)
endif (WIN32)
+
+install(TARGETS qmc-example RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})