diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..b5cf5566221eace6fa97746e672ea288463c1fc6 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,159 @@ +## Version: $Id$ +## +###################################################################### +## +### Commentary: +## +###################################################################### +## +### Change Log: +## +###################################################################### +## +### Code: + +cmake_minimum_required(VERSION 3.0.0) + +###################################################################### + +project(dtkWidgets) + +## ################################################################### +## Version setup +## ################################################################### + +set(${PROJECT_NAME}_VERSION_MAJOR 0) +set(${PROJECT_NAME}_VERSION_MINOR 1) +set(${PROJECT_NAME}_VERSION_PATCH 0) +set(${PROJECT_NAME}_VERSION + ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH}) + +## ################################################################### +## Output directory setup +## ################################################################### + +include(GNUInstallDirs) + +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) + +## ################################################################# +## Install prefix +## ################################################################# + +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/install" CACHE PATH "${PROJECT_NAME} install prefix" FORCE) +endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + +## ################################################################# +## Generate compilation database +## ################################################################# + +set(CMAKE_EXPORT_COMPILE_COMMANDS "ON") + +## ################################################################# +## Build setup +## ################################################################# + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +## ################################################################### +## Dependencies - cmake +## ################################################################### + +include(GenerateExportHeader) + +## ################################################################# +## Dependencies - external +## ################################################################# + +find_package(Qt5Core REQUIRED) +find_package(Qt5Widgets REQUIRED) +find_package(Qt5OpenGL REQUIRED) +find_package(Qt5Xml REQUIRED) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +## ################################################################# +## Dependencies - internal +## ################################################################# + +include_directories(${CMAKE_BINARY_DIR}) +include_directories(${CMAKE_SOURCE_DIR}/src) +include_directories(${CMAKE_SOURCE_DIR}/src/dtkWidgets) + +## ################################################################### +## Input +## ################################################################### + +add_subdirectory(src) + +## ################################################################### +## Exporting +## ################################################################### + +export(PACKAGE ${PROJECT_NAME}) + +configure_file(${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in + "${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake" @ONLY) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.install.cmake.in + "${CMAKE_BINARY_DIR}/install/${PROJECT_NAME}Config.cmake" @ONLY) + +configure_file(${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake.in + "${CMAKE_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" @ONLY) + +install(FILES + "${CMAKE_BINARY_DIR}/install/${PROJECT_NAME}Config.cmake" + "${CMAKE_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) + +install(EXPORT ${PROJECT_NAME}Depends DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) + +## ################################################################### +## Beautifying +## ################################################################### + +mark_as_advanced(${PROJECT_NAME}_VERSION_MAJOR) +mark_as_advanced(${PROJECT_NAME}_VERSION_MINOR) +mark_as_advanced(${PROJECT_NAME}_VERSION_BUILD) + +mark_as_advanced(Qt5OpenGL_DIR) +mark_as_advanced(Qt5Concurrent_DIR) +mark_as_advanced(Qt5Core_DIR) +mark_as_advanced(Qt5Declarative_DIR) +mark_as_advanced(Qt5Gui_DIR) +mark_as_advanced(Qt5Network_DIR) +mark_as_advanced(Qt5Qml_DIR) +mark_as_advanced(Qt5Quick_DIR) +mark_as_advanced(Qt5QuickTest_DIR) +mark_as_advanced(Qt5Script_DIR) +mark_as_advanced(Qt5Test_DIR) +mark_as_advanced(Qt5Widgets_DIR) +mark_as_advanced(Qt5Xml_DIR) +mark_as_advanced(Qt5Sql_DIR) + +mark_as_advanced(CMAKE_AR) +mark_as_advanced(CMAKE_BUILD_TYPE) +mark_as_advanced(CMAKE_INSTALL_PREFIX) +mark_as_advanced(CMAKE_OSX_ARCHITECTURES) +mark_as_advanced(CMAKE_OSX_DEPLOYMENT_TARGET) +mark_as_advanced(CMAKE_OSX_SYSROOT) + +## ################################################################### +## Packaging +## ################################################################### + +include(InstallRequiredSystemLibraries) + +set(CPACK_PACKAGE_VERSION_MAJOR "${${PROJECT_NAME}_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${${PROJECT_NAME}_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${${PROJECT_NAME}_VERSION_PATCH}") + +include(CPack) + +###################################################################### +### CMakeLists.txt ends here diff --git a/cmake/dtkWidgetsConfig.cmake.in b/cmake/dtkWidgetsConfig.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..f0349dfe9c9265a1426ac7df3aa5ddaae0305a55 --- /dev/null +++ b/cmake/dtkWidgetsConfig.cmake.in @@ -0,0 +1,23 @@ +## Version: $Id$ +## +###################################################################### +## +### Commentary: +## +###################################################################### +## +### Change Log: +## +###################################################################### +## +### Code: + +set(dtkWidgets_INCLUDE_DIRS + "@CMAKE_CURRENT_SOURCE_DIR@/src" + "@CMAKE_CURRENT_SOURCE_DIR@/src/dtkWidgets" + "@CMAKE_CURRENT_BINARY_DIR@") + +include("@CMAKE_BINARY_DIR@/dtkWidgetsDepends.cmake") + +###################################################################### +### dtkWidgetsConfig.cmake.in ends here diff --git a/cmake/dtkWidgetsConfig.install.cmake.in b/cmake/dtkWidgetsConfig.install.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..c43efe94e0a4c719e824bdee73688f9203a8fe50 --- /dev/null +++ b/cmake/dtkWidgetsConfig.install.cmake.in @@ -0,0 +1,22 @@ +## Version: $Id$ +## +###################################################################### +## +### Commentary: +## +###################################################################### +## +### Change Log: +## +###################################################################### +## +### Code: + +set(dtkWidgets_INCLUDE_DIRS + "@CMAKE_INSTALL_PREFIX@/include" + "@CMAKE_INSTALL_PREFIX@/include/dtkWidgets") + +include("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/cmake/dtkWidgets/dtkWidgetsDepends.cmake") + +###################################################################### +### dtkWidgetsConfig.install.cmake.in ends here diff --git a/cmake/dtkWidgetsConfigVersion.cmake.in b/cmake/dtkWidgetsConfigVersion.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..6111d027f2129192a9b60dfc1a570661321564fa --- /dev/null +++ b/cmake/dtkWidgetsConfigVersion.cmake.in @@ -0,0 +1,27 @@ +## Version: $Id$ +## +###################################################################### +## +### Commentary: +## +###################################################################### +## +### Change Log: +## +###################################################################### +## +### Code: + +set(PACKAGE_VERSION "@dtkWidgets_VERSION@") + +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() + +###################################################################### +### dtkWidgetsConfigVersion.cmake.in ends here