diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,32 +1,47 @@ project(AtCore) -# 3.0 is needed to support CMAKE_AUTOUIC -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.8) set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(ECM REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH}) -include(KDECompilerSettings NO_POLICY_SCOPE) -include(KDEInstallDirs) -include(KDECMakeSettings) +include(CMakePackageConfigHelpers) +include(ECMGenerateHeaders) +include(ECMGeneratePriFile) include(ECMInstallIcons) +include(ECMSetupVersion) include(FeatureSummary) include(GenerateExportHeader) -include(ECMSetupVersion) -include(CMakePackageConfigHelpers) -include(ECMGenerateHeaders) +include(KDECompilerSettings NO_POLICY_SCOPE) +include(KDEInstallDirs) +include(KDECMakeSettings) option(BUILD_GUI "Build the Test Gui") -option(BUILD_DOCS "Build and Install Documents (Requires Doxygen)") +option(BUILD_DOCS "Build and Install Documents (Requires Doxygen)") option(BUILD_TESTS "Build and Run Unittests") -set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra modules and scripts for CMake" URL "git://anongit.kde.org/extra-cmake-modules") +set_package_properties( + ECM PROPERTIES + TYPE REQUIRED + DESCRIPTION "Extra modules and scripts for CMake" + URL "git://anongit.kde.org/extra-cmake-modules") set(PROJECT_VERSION "1.0.70") set(KF5_DEP_VERSION "5.24.0") # handled by release scripts set(REQUIRED_QT_VERSION 5.4.0) +set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/AtCore") + +# Generate version check file. +ecm_setup_version(${PROJECT_VERSION} + VARIABLE_PREFIX ATCORE + VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/atcore_version.h" + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/AtCoreConfigVersion.cmake" + SOVERSION ${PROJECT_VERSION_MAJOR} +) +# Get the version from git if it's a git repository IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git) FIND_PACKAGE(Git) IF(GIT_FOUND) @@ -53,13 +68,6 @@ include(ECMPoQmTools) -ecm_setup_version(${PROJECT_VERSION} - VARIABLE_PREFIX ATCORE - VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/atcore_version.h" - PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/AtCoreConfigVersion.cmake" - SOVERSION ${PROJECT_VERSION_MAJOR} -) - if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") ecm_install_po_files_as_qm(po) endif() @@ -96,30 +104,15 @@ add_subdirectory(doc) endif() -set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/AtCore") -configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/AtCoreConfig.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/AtCoreConfig.cmake" - INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} -) - install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/AtCoreConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/AtCoreConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) -install(EXPORT - AtCoreTargets - DESTINATION "${CMAKECONFIG_INSTALL_DIR}" - FILE AtCoreTargets.cmake - NAMESPACE AtCore:: - COMPONENT Devel -) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/atcore_version.h" - DESTINATION "${CMAKE_INSTALL_PREFIX}/include/AtCore/" + DESTINATION "${INCLUDE_INSTALL_DIR}/AtCore/" COMPONENT Devel ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,63 +1,16 @@ +add_subdirectory(core) add_subdirectory(plugins) add_subdirectory(widgets) -configure_file( - atcore_default_folders.h.in - ${CMAKE_CURRENT_BINARY_DIR}/atcore_default_folders.h +install( + EXPORT + AtCoreTargets + DESTINATION + "${CMAKECONFIG_INSTALL_DIR}" + FILE + AtCoreTargets.cmake + NAMESPACE + AtCore:: + COMPONENT + Devel ) - -set(AtCoreLib_SRCS - atcore.cpp - seriallayer.cpp - gcodecommands.cpp - ifirmware.cpp - temperature.cpp - printthread.cpp -) - -add_library(AtCore SHARED ${AtCoreLib_SRCS}) -target_link_libraries(AtCore Qt5::Core Qt5::SerialPort) - -generate_export_header(AtCore BASE_NAME atcore) -add_library(AtCore::AtCore ALIAS AtCore) - -target_include_directories(AtCore INTERFACE "$") - -set_target_properties(AtCore PROPERTIES VERSION ${ATCORE_VERSION_STRING} - SOVERSION ${ATCORE_SOVERSION} - EXPORT_NAME AtCore -) - -ecm_generate_headers(ATCORE_CamelCase_HEADERS - HEADER_NAMES - AtCore - GCodeCommands - IFirmware - SerialLayer - Temperature - REQUIRED_HEADERS ATCORE_HEADERS -) - -ecm_create_qm_loader(AtCoreLib_SRCS atcore_qt) - -install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/atcore_export.h - DESTINATION ${KDE_INSTALL_INCLUDEDIR}/AtCore COMPONENT Devel -) - -install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/atcore_default_folders.h - ${ATCORE_HEADERS} - DESTINATION ${KDE_INSTALL_INCLUDEDIR}/AtCore COMPONENT Devel -) - -install(FILES - ${ATCORE_CamelCase_HEADERS} - DESTINATION ${KDE_INSTALL_INCLUDEDIR}/AtCore -) - -install(TARGETS AtCore EXPORT AtCoreTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) - -include(ECMGeneratePriFile) -ecm_generate_pri_file(BASE_NAME AtCore LIB_NAME AtCore DEPS "Qt5Core Qt5SerialPort" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/AtCore) -install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) diff --git a/AtCoreConfig.cmake.in b/src/core/AtCoreConfig.cmake.in rename from AtCoreConfig.cmake.in rename to src/core/AtCoreConfig.cmake.in diff --git a/src/CMakeLists.txt b/src/core/CMakeLists.txt copy from src/CMakeLists.txt copy to src/core/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,6 +1,6 @@ -add_subdirectory(plugins) -add_subdirectory(widgets) - +# +# Create the Library. +# configure_file( atcore_default_folders.h.in ${CMAKE_CURRENT_BINARY_DIR}/atcore_default_folders.h @@ -18,7 +18,12 @@ add_library(AtCore SHARED ${AtCoreLib_SRCS}) target_link_libraries(AtCore Qt5::Core Qt5::SerialPort) -generate_export_header(AtCore BASE_NAME atcore) +# +# +# Configure the Library +# +# + add_library(AtCore::AtCore ALIAS AtCore) target_include_directories(AtCore INTERFACE "$") @@ -40,6 +45,27 @@ ecm_create_qm_loader(AtCoreLib_SRCS atcore_qt) +generate_export_header(AtCore BASE_NAME atcore) + + +configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/AtCoreConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/AtCoreConfig.cmake" + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} +) + + +# +# +# Install the Library +# +# + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/AtCoreConfig.cmake" + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel +) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/atcore_export.h DESTINATION ${KDE_INSTALL_INCLUDEDIR}/AtCore COMPONENT Devel @@ -56,8 +82,20 @@ DESTINATION ${KDE_INSTALL_INCLUDEDIR}/AtCore ) -install(TARGETS AtCore EXPORT AtCoreTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) +install( + TARGETS + AtCore + EXPORT + AtCoreTargets + ${KF5_INSTALL_TARGETS_DEFAULT_ARGS} +) + +ecm_generate_pri_file( + BASE_NAME AtCore + LIB_NAME AtCore + DEPS "Qt5Core Qt5SerialPort" + FILENAME_VAR PRI_FILENAME + INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/AtCore +) -include(ECMGeneratePriFile) -ecm_generate_pri_file(BASE_NAME AtCore LIB_NAME AtCore DEPS "Qt5Core Qt5SerialPort" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/AtCore) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) diff --git a/src/atcore.h b/src/core/atcore.h rename from src/atcore.h rename to src/core/atcore.h diff --git a/src/atcore.cpp b/src/core/atcore.cpp rename from src/atcore.cpp rename to src/core/atcore.cpp diff --git a/src/atcore_default_folders.h.in b/src/core/atcore_default_folders.h.in rename from src/atcore_default_folders.h.in rename to src/core/atcore_default_folders.h.in diff --git a/src/gcodecommands.h b/src/core/gcodecommands.h rename from src/gcodecommands.h rename to src/core/gcodecommands.h diff --git a/src/gcodecommands.cpp b/src/core/gcodecommands.cpp rename from src/gcodecommands.cpp rename to src/core/gcodecommands.cpp diff --git a/src/ifirmware.h b/src/core/ifirmware.h rename from src/ifirmware.h rename to src/core/ifirmware.h diff --git a/src/ifirmware.cpp b/src/core/ifirmware.cpp rename from src/ifirmware.cpp rename to src/core/ifirmware.cpp diff --git a/src/printthread.h b/src/core/printthread.h rename from src/printthread.h rename to src/core/printthread.h diff --git a/src/printthread.cpp b/src/core/printthread.cpp rename from src/printthread.cpp rename to src/core/printthread.cpp diff --git a/src/seriallayer.h b/src/core/seriallayer.h rename from src/seriallayer.h rename to src/core/seriallayer.h diff --git a/src/seriallayer.cpp b/src/core/seriallayer.cpp rename from src/seriallayer.cpp rename to src/core/seriallayer.cpp diff --git a/src/temperature.h b/src/core/temperature.h rename from src/temperature.h rename to src/core/temperature.h diff --git a/src/temperature.cpp b/src/core/temperature.cpp rename from src/temperature.cpp rename to src/core/temperature.cpp diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt --- a/src/plugins/CMakeLists.txt +++ b/src/plugins/CMakeLists.txt @@ -1,5 +1,3 @@ -include_directories(..) - set(RepetierPlugin_SRCS repetierplugin.cpp) add_library(repetier SHARED ${RepetierPlugin_SRCS}) target_link_libraries(repetier Qt5::Core AtCore::AtCore) @@ -44,7 +42,7 @@ ) endif() -if(UNIX AND NOT APPLE) +if(UNIX AND NOT APPLE) install( TARGETS repetier diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -1,21 +1,3 @@ -set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/AtCore") -configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/AtCoreWidgetsConfig.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/AtCoreWidgetsConfig.cmake" - INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} -) -install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/AtCoreWidgetsConfig.cmake" - DESTINATION "${CMAKECONFIG_INSTALL_DIR}" - COMPONENT Devel -) - -install(EXPORT - AtCoreWidgetsTargets - DESTINATION "${CMAKECONFIG_INSTALL_DIR}" - FILE AtCoreWidgetsTargets.cmake - NAMESPACE AtCore:: - COMPONENT Devel -) set(widgetsLIB_SRCS about.cpp @@ -28,17 +10,25 @@ sdwidget.cpp statuswidget.cpp temperaturewidget.cpp - ) +) add_library(AtCoreWidgets ${widgetsLIB_SRCS}) +target_link_libraries(AtCoreWidgets AtCore::AtCore Qt5::Core Qt5::Widgets Qt5::Charts) -if (APPLE) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -std=c++11") -endif() +set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/AtCore") +configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/AtCoreWidgetsConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/AtCoreWidgetsConfig.cmake" + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} +) -target_link_libraries(AtCoreWidgets AtCore::AtCore Qt5::Core Qt5::Widgets Qt5::Charts) +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/AtCoreWidgetsConfig.cmake" + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel +) generate_export_header(AtCoreWidgets BASE_NAME atcorewidgets) + add_library(AtCore::AtCoreWidgets ALIAS AtCoreWidgets) target_include_directories(AtCoreWidgets INTERFACE "$") @@ -76,8 +66,21 @@ DESTINATION ${KDE_INSTALL_INCLUDEDIR}/AtCore COMPONENT Devel ) -install(TARGETS AtCoreWidgets EXPORT AtCoreWidgetsTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) +install( + TARGETS + AtCoreWidgets + EXPORT + AtCoreTargets + ${KF5_INSTALL_TARGETS_DEFAULT_ARGS} +) + + +ecm_generate_pri_file( + BASE_NAME AtCoreWidgets + LIB_NAME AtCoreWidgets + DEPS "Qt5Core Qt5Widgets Qt5Charts" + FILENAME_VAR PRI_FILENAME + INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/AtCore +) -include(ECMGeneratePriFile) -ecm_generate_pri_file(BASE_NAME AtCoreWidgets LIB_NAME AtCoreWidgets DEPS "Qt5Core Qt5Widgets Qt5Charts" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/AtCore) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})