CMakeLists.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. #
  2. # Copyright (C) 2013-2020 Mattia Basaglia
  3. #
  4. # This program is free software: you can redistribute it and/or modify
  5. # it under the terms of the GNU Lesser General Public License as published by
  6. # the Free Software Foundation, either version 3 of the License, or
  7. # (at your option) any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. # GNU Lesser General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU Lesser General Public License
  15. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. #
  17. cmake_minimum_required (VERSION 3.1 FATAL_ERROR)
  18. if ( ${CMAKE_VERSION} VERSION_GREATER "3.12.0")
  19. cmake_policy(SET CMP0077 NEW)
  20. endif()
  21. set(COLORWIDGET_PROJECT_NAME QtColorWidgets)
  22. project(${COLORWIDGET_PROJECT_NAME} CXX)
  23. set (CMAKE_MODULE_PATH
  24. ${CMAKE_MODULE_PATH}
  25. ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules
  26. ${CMAKE_CURRENT_LIST_DIR})
  27. include (CheckCXXCompilerFlag)
  28. include (cmake/install.cmake)
  29. include (cmake/versioning.cmake)
  30. SET (${COLORWIDGET_PROJECT_NAME}_VERSION_MAJOR 2)
  31. SET (${COLORWIDGET_PROJECT_NAME}_VERSION_MINOR 2)
  32. SET (${COLORWIDGET_PROJECT_NAME}_VERSION_PATCH 0)
  33. SET (${COLORWIDGET_PROJECT_NAME}_VERSION "${${COLORWIDGET_PROJECT_NAME}_VERSION_MAJOR}.${${COLORWIDGET_PROJECT_NAME}_VERSION_MINOR}.${${COLORWIDGET_PROJECT_NAME}_VERSION_PATCH}")
  34. if(NOT QT_VERSION_MAJOR)
  35. set(QT_VERSION_MAJOR 5 CACHE STRING "Qt version to use (4, 5 or 6), defaults to 5")
  36. endif()
  37. find_package(QT NAMES Qt${QT_VERSION_MAJOR} COMPONENTS Core QUIET)
  38. find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Widgets REQUIRED)
  39. # Auto generate moc files
  40. set(CMAKE_AUTOMOC ON)
  41. # Auto generate moc files
  42. set(CMAKE_AUTOUIC ON)
  43. # Auto generate moc files
  44. set(CMAKE_AUTORCC ON)
  45. option(BUILD_SHARED_LIBS "Build the shared library" ON)
  46. option(BUILD_STATIC_LIBS "Build the static library" OFF)
  47. set (TARGET_NAME ${COLORWIDGET_PROJECT_NAME})
  48. option(COLOR_WIDGETS_QT_SUFFIX "Append qt version to the target output files" OFF)
  49. if ( COLOR_WIDGETS_QT_SUFFIX )
  50. set (TARGET_OUTPUT_SUFFIX "-Qt${QT_VERSION}${${COLORWIDGET_PROJECT_NAME}_VERSION_MAJOR}")
  51. else()
  52. set (TARGET_OUTPUT_SUFFIX "")
  53. endif()
  54. set (INCLUDE_PREFIX "QtColorWidgets")
  55. set (COLOR_WIDGETS_LIBRARY "${TARGET_NAME}")
  56. if ( ${BUILD_STATIC_LIBS} )
  57. add_definitions(-DQTCOLORWIDGETS_STATICALLY_LINKED)
  58. endif()
  59. add_library (${TARGET_NAME} "")
  60. set_target_properties(${TARGET_NAME}
  61. PROPERTIES
  62. EXPORT_NAME "${TARGET_NAME}${TARGET_OUTPUT_SUFFIX}")
  63. set_target_properties (${TARGET_NAME}
  64. PROPERTIES
  65. CXX_STANDARD 11
  66. CXX_STANDARD_REQUIRED ON
  67. VERSION ${${COLORWIDGET_PROJECT_NAME}_VERSION}
  68. SOVERSION ${${COLORWIDGET_PROJECT_NAME}_VERSION_MAJOR}
  69. "INTERFACE_${COLORWIDGET_PROJECT_NAME}_MAJOR_VERSION" ${${COLORWIDGET_PROJECT_NAME}_VERSION_MAJOR}
  70. COMPATIBLE_INTERFACE_STRING "${COLORWIDGET_PROJECT_NAME}_MAJOR_VERSION"
  71. COMPILE_DEFINITIONS QTCOLORWIDGETS_LIBRARY
  72. OUTPUT_NAME "${TARGET_NAME}${TARGET_OUTPUT_SUFFIX}")
  73. check_cxx_compiler_flag ("-Wall" Wall_FLAG_SUPPORTED)
  74. if (Wall_FLAG_SUPPORTED)
  75. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
  76. endif (Wall_FLAG_SUPPORTED)
  77. check_cxx_compiler_flag ("-pedantic" pedantic_FLAG_SUPPORTED)
  78. if (pedantic_FLAG_SUPPORTED)
  79. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pedantic")
  80. endif (pedantic_FLAG_SUPPORTED)
  81. check_cxx_compiler_flag ("-Wextra" Wextra_FLAG_SUPPORTED)
  82. if (Wextra_FLAG_SUPPORTED)
  83. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wextra")
  84. endif (Wextra_FLAG_SUPPORTED)
  85. set (EXPORT_HEADER "${INCLUDE_PREFIX}/colorwidgets_global.hpp")
  86. generate_versioning_information (
  87. TARGET_NAME ${TARGET_NAME}
  88. EXPORT_HEADER ${EXPORT_HEADER}
  89. EXPORT_MACRO QCP_EXPORT
  90. VERSIONED_ENTITY ${COLORWIDGET_PROJECT_NAME}
  91. INCLUDE_PREFIX ${INCLUDE_PREFIX}
  92. COMPANY_NAME "Mattia Basaglia"
  93. COMPANY_COPYRIGHT "Mattia Basaglia Copyright (C) 2013-2020"
  94. FILE_DESCRIPTION "Color wheel widget and dialog for Qt${QT_VERSION}"
  95. )
  96. target_include_directories(${TARGET_NAME}
  97. PUBLIC
  98. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  99. $<INSTALL_INTERFACE:include>
  100. PUBLIC
  101. $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
  102. $<INSTALL_INTERFACE:include>
  103. )
  104. add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR}/include/${INCLUDE_PREFIX})
  105. add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR}/resources/${INCLUDE_PREFIX})
  106. add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR}/src/${INCLUDE_PREFIX})
  107. target_link_libraries (${TARGET_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
  108. install_project (
  109. PROJECT_NAME ${COLORWIDGET_PROJECT_NAME}
  110. TARGET_NAME ${TARGET_NAME}
  111. TARGET_OUTPUT_SUFFIX "${TARGET_OUTPUT_SUFFIX}"
  112. EXPORT_HEADER ${EXPORT_HEADER}
  113. INCLUDE_PREFIX ${INCLUDE_PREFIX}
  114. HEADER_MATCHING_REGEX "^.*\.h$|^.*\.hpp$|^.*$"
  115. VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${COLORWIDGET_PROJECT_NAME}_version.h
  116. NAMESPACE "")
  117. add_subdirectory (gallery)
  118. option(QTCOLORWIDGETS_DESIGNER_PLUGIN "Build QtDesigner plugin" ON)
  119. if (${QTCOLORWIDGETS_DESIGNER_PLUGIN})
  120. find_package (Qt${QT_VERSION_MAJOR}Designer QUIET)
  121. if (Qt${QT_VERSION_MAJOR}Designer_FOUND)
  122. add_subdirectory (color_widgets_designer_plugin)
  123. endif(Qt${QT_VERSION_MAJOR}Designer_FOUND)
  124. endif()
  125. configure_file(Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
  126. add_custom_target(
  127. ${COLORWIDGET_PROJECT_NAME}_docs
  128. COMMAND doxygen Doxyfile
  129. COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/gallery/*.png ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html
  130. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  131. )