CMakeLists.txt 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. # Copyright (C) 2013-2020 Mattia Basaglia
  2. #
  3. #
  4. # This software 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 software 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 Color Widgets. If not, see <http://www.gnu.org/licenses/>.
  16. cmake_minimum_required (VERSION 3.1 FATAL_ERROR)
  17. project(QtColorWidgetsPlugin CXX)
  18. set (CMAKE_MODULE_PATH
  19. ${CMAKE_MODULE_PATH}
  20. ${CMAKE_SOURCE_DIR}/cmake/modules
  21. ${CMAKE_CURRENT_LIST_DIR}/..)
  22. include (CheckCXXCompilerFlag)
  23. include (../cmake/versioning.cmake)
  24. SET (${PROJECT_NAME}_VERSION_MAJOR 2)
  25. SET (${PROJECT_NAME}_VERSION_MINOR 2)
  26. SET (${PROJECT_NAME}_VERSION_PATCH 0)
  27. SET (${PROJECT_NAME}_VERSION "${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH}")
  28. find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Designer REQUIRED)
  29. # Auto generate moc files
  30. set(CMAKE_AUTOMOC ON)
  31. # Auto generate moc files
  32. set(CMAKE_AUTOUIC ON)
  33. # Auto generate moc files
  34. set(CMAKE_AUTORCC ON)
  35. check_cxx_compiler_flag ("-Wall" Wall_FLAG_SUPPORTED)
  36. if (Wall_FLAG_SUPPORTED)
  37. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
  38. endif (Wall_FLAG_SUPPORTED)
  39. check_cxx_compiler_flag ("-pedantic" pedantic_FLAG_SUPPORTED)
  40. if (pedantic_FLAG_SUPPORTED)
  41. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pedantic")
  42. endif (pedantic_FLAG_SUPPORTED)
  43. check_cxx_compiler_flag ("-Wextra" Wextra_FLAG_SUPPORTED)
  44. if (Wextra_FLAG_SUPPORTED)
  45. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wextra")
  46. endif (Wextra_FLAG_SUPPORTED)
  47. # Library
  48. set (TARGET_NAME ${PROJECT_NAME})
  49. set (TARGET_OUTPUT_SUFFIX "-Qt${QT_VERSION}${${PROJECT_NAME}_VERSION_MAJOR}")
  50. add_library (${TARGET_NAME} SHARED "")
  51. set_target_properties(${TARGET_NAME}
  52. PROPERTIES
  53. EXPORT_NAME "${TARGET_NAME}${TARGET_OUTPUT_SUFFIX}")
  54. set_target_properties (${TARGET_NAME}
  55. PROPERTIES
  56. CXX_STANDARD 11
  57. CXX_STANDARD_REQUIRED ON
  58. VERSION ${${PROJECT_NAME}_VERSION}
  59. SOVERSION ${${PROJECT_NAME}_VERSION_MAJOR}
  60. "INTERFACE_${PROJECT_NAME}_MAJOR_VERSION" ${${PROJECT_NAME}_VERSION_MAJOR}
  61. COMPATIBLE_INTERFACE_STRING "${PROJECT_NAME}_MAJOR_VERSION"
  62. OUTPUT_NAME "${TARGET_NAME}${TARGET_OUTPUT_SUFFIX}")
  63. target_link_libraries(${TARGET_NAME}
  64. PRIVATE
  65. ${COLOR_WIDGETS_LIBRARY}
  66. Qt${QT_VERSION_MAJOR}::Designer
  67. )
  68. # Sources
  69. set(SOURCES
  70. color_preview_plugin.cpp
  71. color_wheel_plugin.cpp
  72. color_widget_plugin_collection.cpp
  73. gradient_slider_plugin.cpp
  74. hue_slider_plugin.cpp
  75. color_selector_plugin.cpp
  76. color_list_plugin.cpp
  77. swatch_plugin.cpp
  78. color_palette_widget_plugin.cpp
  79. color_2d_slider_plugin.cpp
  80. color_line_edit_plugin.cpp
  81. gradient_editor_plugin.cpp
  82. # add new sources above this line
  83. )
  84. foreach (SOURCE IN LISTS SOURCES)
  85. target_sources (${TARGET_NAME}
  86. PRIVATE
  87. $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/${SOURCE}>)
  88. endforeach (SOURCE IN SOURCES)
  89. set(HEADERS
  90. color_preview_plugin.hpp
  91. color_wheel_plugin.hpp
  92. color_widget_plugin_collection.hpp
  93. gradient_slider_plugin.hpp
  94. hue_slider_plugin.hpp
  95. color_selector_plugin.hpp
  96. color_list_plugin.hpp
  97. swatch_plugin.hpp
  98. color_palette_widget_plugin.hpp
  99. color_2d_slider_plugin.hpp
  100. color_line_edit_plugin.hpp
  101. gradient_editor_plugin.hpp
  102. # add new headers above this line
  103. )
  104. foreach (HEADER IN LISTS HEADERS)
  105. target_sources (${TARGET_NAME}
  106. PRIVATE
  107. $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/${HEADER}>)
  108. endforeach (HEADER IN HEADERS)
  109. # install
  110. get_target_property (QT_QMAKE_EXECUTABLE
  111. Qt${QT_VERSION_MAJOR}::qmake LOCATION)
  112. execute_process (
  113. COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_PLUGINS
  114. OUTPUT_VARIABLE QT_INSTALL_PLUGINS
  115. OUTPUT_STRIP_TRAILING_WHITESPACE)
  116. # install(TARGETS ${COLOR_WIDGETS_PLUGIN} DESTINATION ${QT_INSTALL_PLUGINS}/designer OPTIONAL)
  117. execute_process (
  118. COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_LIBS
  119. OUTPUT_VARIABLE QT_INSTALL_LIBS
  120. OUTPUT_STRIP_TRAILING_WHITESPACE)
  121. # install(TARGETS ${COLOR_WIDGETS_PLUGIN} DESTINATION ${QT_INSTALL_LIBS}/qtcreator/plugins OPTIONAL)
  122. add_custom_target(${TARGET_NAME}_install
  123. COMMAND cp $<TARGET_FILE:${TARGET_NAME}> ${QT_INSTALL_PLUGINS}/designer
  124. COMMAND cp $<TARGET_FILE:${TARGET_NAME}> ${QT_INSTALL_LIBS}/qtcreator/plugins
  125. DEPENDS ${TARGET_NAME}
  126. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})