diff --git a/CMake/GenerateqRestAPIConfig.cmake b/CMake/GenerateqRestAPIConfig.cmake deleted file mode 100644 index d82da7a..0000000 --- a/CMake/GenerateqRestAPIConfig.cmake +++ /dev/null @@ -1,20 +0,0 @@ - -configure_file( - ${qRestAPI_SOURCE_DIR}/CMake/UseqRestAPI.cmake.in - ${qRestAPI_BINARY_DIR}/UseqRestAPI.cmake COPYONLY) - -# Include directories -set(qRestAPI_INCLUDE_DIRS_CONFIG ${qRestAPI_INCLUDE_DIRS}) - -# Library directories -set(qRestAPI_LIBRARY_DIRS_CONFIG ${qRestAPI_BINARY_DIR}) - -# UseqRestAPI file -set(qRestAPI_USE_FILE_CONFIG ${qRestAPI_BINARY_DIR}/UseqRestAPI.cmake) - -export(TARGETS qRestAPI FILE ${qRestAPI_BINARY_DIR}/qRestAPIExports.cmake) - -# Configure qRestAPIConfig.cmake -configure_file( - ${qRestAPI_SOURCE_DIR}/CMake/qRestAPIConfig.cmake.in - ${qRestAPI_BINARY_DIR}/qRestAPIConfig.cmake @ONLY) diff --git a/CMake/UseqRestAPI.cmake.in b/CMake/UseqRestAPI.cmake.in deleted file mode 100644 index 4275caa..0000000 --- a/CMake/UseqRestAPI.cmake.in +++ /dev/null @@ -1,16 +0,0 @@ -# -# This module is provided as qCDashAPI_USE_FILE by qCDashAPIConfig.cmake. It can -# be INCLUDED in a project to load the needed compiler and linker -# settings to use qRestAPI. -# - -if(NOT qRestAPI_USE_FILE_INCLUDED) - set(qRestAPI_USE_FILE_INCLUDED 1) - - # Add include directories needed to use qRestAPI. - include_directories(${qRestAPI_INCLUDE_DIRS}) - - # Add link directories needed to use qRestAPI. - link_directories(${qRestAPI_LIBRARY_DIRS}) - -endif() diff --git a/CMake/qRestAPIConfig.cmake.in b/CMake/qRestAPIConfig.cmake.in deleted file mode 100644 index ee15dd2..0000000 --- a/CMake/qRestAPIConfig.cmake.in +++ /dev/null @@ -1,14 +0,0 @@ - -# Import qRestAPI targets -if(NOT qRestAPI_EXPORTS_INCLUDED) - include("@qRestAPI_BINARY_DIR@/qRestAPIExports.cmake") - set(qRestAPI_EXPORTS_INCLUDED 1) -endif() - -set(qRestAPI_LIBRARIES "qRestAPI") - -set(qRestAPI_INCLUDE_DIRS "@qRestAPI_INCLUDE_DIRS_CONFIG@") -set(qRestAPI_LIBRARY_DIRS "@qRestAPI_LIBRARY_DIRS_CONFIG@") - -# The location of the UseqRestAPI.cmake file. -set(qRestAPI_USE_FILE "@qRestAPI_USE_FILE_CONFIG@") diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c3e905..29fe52b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,13 +2,45 @@ cmake_minimum_required(VERSION 3.5.0) project(qRestAPI) +# -------------------------------------------------------------------------- +# CMake variables +# -------------------------------------------------------------------------- set(CMAKE_INCLUDE_CURRENT_DIR 1) set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE 1) set(CMAKE_POSITION_INDEPENDENT_CODE 1) +# -------------------------------------------------------------------------- +# Directories +# -------------------------------------------------------------------------- +# +# CMake +# +set(${PROJECT_NAME}_CMAKE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/CMake) +set(CMAKE_MODULE_PATH ${qRestAPI_CMAKE_DIR} ${CMAKE_MODULE_PATH}) +# +# Include +# +set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} + CACHE INTERNAL "${PROJECT_NAME} include dirs" FORCE) +# +# Library +# +set(${PROJECT_NAME}_LIBRARY_DIRS ${CMAKE_CURRENT_BINARY_DIR} + CACHE INTERNAL "${PROJECT_NAME} library dirs" FORCE) + +# -------------------------------------------------------------------------- +# Options +# -------------------------------------------------------------------------- option(BUILD_SHARED_LIBS "Build shared library" ON) option(BUILD_TESTING "Test the project" ON) +# -------------------------------------------------------------------------- +# Dependencies +# -------------------------------------------------------------------------- + +# +# Qt +# set(qRestAPI_QT_VERSION "4" CACHE STRING "Expected Qt version") mark_as_advanced(qRestAPI_QT_VERSION) set_property(CACHE qRestAPI_QT_VERSION PROPERTY STRINGS 4 5 6) @@ -36,6 +68,9 @@ else() set(qRestAPI_STATIC ON) endif() +# -------------------------------------------------------------------------- +# Configure headers +# -------------------------------------------------------------------------- configure_file( qRestAPI_Export.h.in ${CMAKE_CURRENT_BINARY_DIR}/qRestAPI_Export.h @@ -53,6 +88,34 @@ set(KIT_SRCS qRestResult.h ) +# -------------------------------------------------------------------------- +# Install headers +# -------------------------------------------------------------------------- +if(NOT DEFINED ${PROJECT_NAME}_INSTALL_NO_DEVELOPMENT) + set(${PROJECT_NAME}_INSTALL_NO_DEVELOPMENT ON) +endif() + +if(NOT ${PROJECT_NAME}_INSTALL_NO_DEVELOPMENT) + + if(NOT DEFINED ${PROJECT_NAME}_INSTALL_INCLUDE_DIR) + set(${PROJECT_NAME}_INSTALL_INCLUDE_DIR include/${PROJECT_NAME}) + endif() + + file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") + install( + FILES ${headers} + DESTINATION ${${PROJECT_NAME}_INSTALL_INCLUDE_DIR} COMPONENT Development) + + file(GLOB headers "${CMAKE_CURRENT_BINARY_DIR}/*.h") + install( + FILES ${headers} + DESTINATION ${${PROJECT_NAME}_INSTALL_INCLUDE_DIR} COMPONENT Development) +endif() + +# -------------------------------------------------------------------------- +# Sources +# -------------------------------------------------------------------------- + set(KIT_MOC_SRCS qGirderAPI.h qMidasAPI.h @@ -69,6 +132,9 @@ else() QT4_WRAP_CPP(KIT_MOC_OUTPUT ${KIT_MOC_SRCS}) endif() +# -------------------------------------------------------------------------- +# Build qRestAPI library +# -------------------------------------------------------------------------- add_library(${PROJECT_NAME} ${KIT_SRCS} ${KIT_MOC_OUTPUT}) if(qRestAPI_QT_VERSION VERSION_GREATER "4") target_link_libraries(${PROJECT_NAME} Qt${qRestAPI_QT_VERSION}::Gui Qt${qRestAPI_QT_VERSION}::Network Qt${qRestAPI_QT_VERSION}::Qml) @@ -76,9 +142,57 @@ else() target_link_libraries(${PROJECT_NAME} ${QT_LIBRARIES}) endif() -include(CTest) +# -------------------------------------------------------------------------- +# Install library +# -------------------------------------------------------------------------- +if(NOT DEFINED ${PROJECT_NAME}_INSTALL_BIN_DIR) + set(${PROJECT_NAME}_INSTALL_BIN_DIR bin) +endif() +if(NOT DEFINED ${PROJECT_NAME}_INSTALL_LIB_DIR) + set(${PROJECT_NAME}_INSTALL_LIB_DIR lib/${PROJECT_NAME}) +endif() + +install(TARGETS ${PROJECT_NAME} + RUNTIME DESTINATION ${${PROJECT_NAME}_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries + LIBRARY DESTINATION ${${PROJECT_NAME}_INSTALL_LIB_DIR} COMPONENT RuntimeLibraries + ARCHIVE DESTINATION ${${PROJECT_NAME}_INSTALL_LIB_DIR} COMPONENT Development + ) + +# -------------------------------------------------------------------------- +# Configure support files +# -------------------------------------------------------------------------- +# Set qRestAPI_INSTALL_CMAKE_DIR +if(NOT DEFINED ${PROJECT_NAME}_INSTALL_CMAKE_DIR) + set(${PROJECT_NAME}_INSTALL_CMAKE_DIR cmake/${PROJECT_NAME}) +endif() + +export(TARGETS qRestAPI FILE ${qRestAPI_BINARY_DIR}/qRestAPIExports.cmake) + +# Configure qRestAPIConfig.cmake +configure_file( + ${qRestAPI_SOURCE_DIR}/qRestAPIConfig.cmake.in + ${qRestAPI_BINARY_DIR}/qRestAPIConfig.cmake @ONLY) + +# Configure qRestAPIConfig.cmake +configure_file( + ${qRestAPI_SOURCE_DIR}/qRestAPIInstallConfig.cmake.in + ${qRestAPI_BINARY_DIR}/install/qRestAPIConfig.cmake @ONLY) + +# -------------------------------------------------------------------------- +# Install configuration files +# -------------------------------------------------------------------------- + +# Install qRestAPIConfig cmake files +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/install/qRestAPIConfig.cmake + DESTINATION ${${PROJECT_NAME}_INSTALL_CMAKE_DIR} COMPONENT Development + ) + +# -------------------------------------------------------------------------- +# Testing if(BUILD_TESTING) +include(CTest) add_subdirectory(Testing) endif() -include(CMake/GenerateqRestAPIConfig.cmake) diff --git a/qRestAPIConfig.cmake.in b/qRestAPIConfig.cmake.in new file mode 100644 index 0000000..627aca1 --- /dev/null +++ b/qRestAPIConfig.cmake.in @@ -0,0 +1,5 @@ +include("${CMAKE_CURRENT_BINARY_DIR}/qRestAPIExports.cmake") + +set(qRestAPI_CMAKE_DIR "@qRestAPI_CMAKE_DIR@") +set(qRestAPI_INCLUDE_DIRS "@qRestAPI_INCLUDE_DIRS@") +set(qRestAPI_LIBRARY_DIRS "@qRestAPI_LIBRARY_DIRS@") diff --git a/qRestAPIInstallConfig.cmake.in b/qRestAPIInstallConfig.cmake.in new file mode 100644 index 0000000..87be75d --- /dev/null +++ b/qRestAPIInstallConfig.cmake.in @@ -0,0 +1,3 @@ +set(qRestAPI_CMAKE_DIR "@CMAKE_INSTALL_PREFIX@/@qRestAPI_INSTALL_CMAKE_DIR@") +set(qRestAPI_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/@qRestAPI_INSTALL_INCLUDE_DIR@") +set(qRestAPI_LIB_DIR "@CMAKE_INSTALL_PREFIX@/@qRestAPI_INSTALL_LIB_DIR@")