diff --git a/CMakeLists.txt b/CMakeLists.txt index 092e5fc..53b2f88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,12 +2,18 @@ cmake_minimum_required(VERSION 3.12.0) project(SingleApplication VERSION 3.6.0 LANGUAGES CXX DESCRIPTION "Replacement for QtSingleApplication") +option(BUILD_SHARED_LIBS "Build shared libraries" OFF) set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) -add_library(${PROJECT_NAME} STATIC +add_library(${PROJECT_NAME} singleapplication.cpp singleapplication_p.cpp ) +set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR}) + +include(GenerateExportHeader) +generate_export_header(${PROJECT_NAME}) # User configurable options if(NOT QT_DEFAULT_MAJOR_VERSION) @@ -98,6 +104,8 @@ if(DOXYGEN_FOUND) endif() if(SINGLEAPPLICATION_INSTALL) + include(GNUInstallDirs) + # Create a header veriant where QAPPLICATION_CLASS is replaced with FreeStandingSingleApplication file(READ "${CMAKE_CURRENT_SOURCE_DIR}/singleapplication.h" SINGLEAPPLICATION_H_CONTENT) @@ -122,7 +130,9 @@ if(SINGLEAPPLICATION_INSTALL) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/singleapplication.h" "${SINGLEAPPLICATION_H_CONTENT}") # CMake install - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/singleapplication.h" "SingleApplication" "FreeStandingSingleApplication" + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/singleapplication.h" + "${CMAKE_CURRENT_BINARY_DIR}/singleapplication_export.h" + "SingleApplication" "FreeStandingSingleApplication" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") include(CMakePackageConfigHelpers) @@ -135,13 +145,14 @@ if(SINGLEAPPLICATION_INSTALL) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SingleApplicationConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/SingleApplicationConfigVersion.cmake" - DESTINATION "lib/cmake/SingleApplication") + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SingleApplication") - install(TARGETS SingleApplication EXPORT SingleApplicationTargets) + install(TARGETS SingleApplication + EXPORT SingleApplicationTargets) install(EXPORT SingleApplicationTargets FILE "SingleApplicationTargets.cmake" NAMESPACE "SingleApplication::" - DESTINATION "lib/cmake/SingleApplication") + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SingleApplication") else() add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) endif() diff --git a/singleapplication.h b/singleapplication.h index 17e3b25..a2772dd 100644 --- a/singleapplication.h +++ b/singleapplication.h @@ -24,6 +24,8 @@ #ifndef SINGLE_APPLICATION_H #define SINGLE_APPLICATION_H +#include "singleapplication_export.h" + #include #include @@ -40,7 +42,7 @@ class SingleApplicationPrivate; * Application * @see QCoreApplication */ -class SingleApplication : public QAPPLICATION_CLASS +class SINGLEAPPLICATION_EXPORT SingleApplication : public QAPPLICATION_CLASS { Q_OBJECT @@ -181,6 +183,6 @@ class SingleApplication : public QAPPLICATION_CLASS void abortSafely(); }; -Q_DECLARE_OPERATORS_FOR_FLAGS(SingleApplication::Options) +SINGLEAPPLICATION_EXPORT Q_DECLARE_OPERATORS_FOR_FLAGS(SingleApplication::Options) #endif // SINGLE_APPLICATION_H