Warning, /libraries/kquickitemviews/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.0)
0002
0003 project(kquickitemviews)
0004
0005 if(POLICY CMP0063)
0006 CMAKE_POLICY(SET CMP0063 NEW)
0007 endif(POLICY CMP0063)
0008
0009 find_package(ECM 1.1.0 REQUIRED NO_MODULE)
0010 list(APPEND CMAKE_MODULE_PATH "${ECM_MODULE_PATH}")
0011
0012 include(ECMInstallIcons)
0013 include(ECMOptionalAddSubdirectory)
0014 include(CMakePackageConfigHelpers)
0015
0016 include(KDEInstallDirs)
0017 include(KDECMakeSettings)
0018 include(KDECompilerSettings)
0019
0020 SET(CMAKE_C_VISIBILITY_PRESET hidden)
0021 SET(CMAKE_CXX_VISIBILITY_PRESET hidden)
0022 SET(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
0023
0024 # When used with `add_subdirectory`, assume it is a static Qt plugin
0025 get_directory_property(USES_ADD_SUBDIRECTORY PARENT_DIRECTORY)
0026 if(USES_ADD_SUBDIRECTORY)
0027 set(BUILD_SHARED_LIBS OFF)
0028 endif()
0029
0030 if(NOT BUILD_SHARED_LIBS)
0031 set(ENABLE__STATIC_PLUGIN 1)
0032 else()
0033 set(ENABLE__STATIC_PLUGIN 0)
0034 endif()
0035
0036 set(CMAKE_AUTOMOC ON)
0037 set(CMAKE_AUTORCC ON)
0038
0039 set(CMAKE_CXX_STANDARD 14)
0040
0041 if(ENABLE__STATIC_PLUGIN)
0042 add_definitions(-DQT_PLUGIN)
0043 add_definitions(-DQT_STATICPLUGIN=1)
0044 add_definitions(-DKQUICKITEMVIEWS_USE_STATIC_PLUGIN=1)
0045 elseif (BUILD_TESTING OR USES_ADD_SUBDIRECTORY)
0046 add_subdirectory(tests)
0047 endif(ENABLE__STATIC_PLUGIN)
0048
0049 find_package(Qt5 CONFIG REQUIRED
0050 Core Gui Quick QuickControls2
0051 )
0052
0053 add_definitions(-isystem ${Qt5Core_PRIVATE_INCLUDE_DIRS})
0054
0055 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/private/)
0056 include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
0057
0058 if("${CMAKE_BUILD_TYPE}" MATCHES "DEBUG")
0059 add_definitions(-DENABLE_EXTRA_VALIDATION=1)
0060 endif()
0061
0062 set(GENERIC_LIB_VERSION "1.0.0")
0063
0064 #File to compile
0065 set( kquickitemviews_LIB_SRCS
0066
0067 # Adapters
0068 src/adapters/abstractitemadapter.cpp
0069 src/adapters/decorationadapter.cpp
0070 src/adapters/modeladapter.cpp
0071 src/adapters/scrollbaradapter.cpp
0072 src/adapters/selectionadapter.cpp
0073 src/adapters/geometryadapter.cpp
0074 src/adapters/viewportadapter.cpp
0075
0076 # Building blocks
0077 src/flickablescrollbar.cpp
0078 src/plugin.cpp
0079 src/proxies/sizehintproxymodel.cpp
0080 src/singlemodelviewbase.cpp
0081 src/viewbase.cpp
0082 src/viewport.cpp
0083 src/contextadapterfactory.cpp
0084 src/qmodelindexwatcher.cpp
0085 src/qmodelindexbinder.cpp
0086 src/delegatechoice.cpp
0087 src/delegatechooser.cpp
0088
0089 # Views
0090 src/views/comboboxview.cpp
0091 src/views/flickable.cpp
0092 src/views/hierarchyview.cpp
0093 src/views/listview.cpp
0094 src/views/sizehintview.cpp
0095 src/views/treeview.cpp
0096 src/views/indexview.cpp
0097
0098 # State trackers
0099 src/private/statetracker/index_p.cpp
0100 src/private/statetracker/geometry_p.cpp
0101 src/private/statetracker/proximity_p.cpp
0102 src/private/statetracker/model_p.cpp
0103 src/private/statetracker/modelitem_p.cpp
0104 src/private/statetracker/selection_p.cpp
0105 src/private/statetracker/content_p.cpp
0106 src/private/statetracker/continuity_p.cpp
0107
0108 src/private/runtimetests_p.cpp
0109 src/private/indexmetadata_p.cpp
0110 src/private/geostrategyselector_p.cpp
0111
0112 # Geometry strategies
0113 src/strategies/justintime.cpp
0114 src/strategies/proxy.cpp
0115 src/strategies/role.cpp
0116 src/strategies/delegate.cpp
0117 src/strategies/uniform.cpp
0118 src/strategies/aheadoftime.cpp
0119 )
0120
0121 set(AUTOMOC_MOC_OPTIONS -Muri=org.kde.playground.kquickitemviews)
0122
0123 add_library(kquickitemviews ${kquickitemviews_LIB_SRCS} )
0124
0125 target_link_libraries( kquickitemviews
0126 Qt5::Core
0127 Qt5::Gui
0128 Qt5::Quick
0129 Qt5::QuickControls2
0130 )
0131
0132 set( kquickitemviews_adapters_LIB_HDRS
0133 AbstractItemAdapter
0134 ContextAdapter
0135 DecorationAdapter
0136 ModelAdapter
0137 ScrollbarAdapter
0138 SelectionAdapter
0139 GeometryAdapter
0140 ViewportAdapter
0141 )
0142
0143 set( kquickitemviews_views_LIB_HDRS
0144 ComboboxView
0145 Flickable
0146 IndexView
0147 HierarchyView
0148 ListView
0149 SizeHintView
0150 TreeView
0151 )
0152
0153 set( kquickitemviews_strategies_LIB_HDRS
0154 JustInTime
0155 Proxy
0156 Role
0157 Delegate
0158 AheadOfTime
0159 Uniform
0160 )
0161
0162 set( kquickitemviews_extensions_LIB_HDRS
0163 ContextExtension
0164 )
0165
0166 set( kquickitemviews_proxies_LIB_HDRS
0167 SizeHintProxyModel
0168 )
0169
0170 set( kquickitemviews_LIB_HDRS
0171 FlickableScrollbar
0172 Plugin
0173 SingleModelViewBase
0174 ContextAdapterFactory
0175 QModelIndexWatcher
0176 QModelIndexBinder
0177 ViewBase
0178 Viewport
0179 DelegateChoice
0180 DelegateChooser
0181 )
0182
0183 set(kquickitemviews_EXPORT_HDRS "")
0184
0185 # Create include file aliases
0186 function(process_header prefix files)
0187 set(header_path ${CMAKE_CURRENT_BINARY_DIR}/include/KQuickItemViews/${prefix})
0188 set(tmp ${kquickitemviews_EXPORT_HDRS})
0189
0190 foreach(header ${files})
0191 string(TOLOWER ${header} real_path)
0192 file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/src/${prefix}${real_path}.h
0193 DESTINATION ${header_path}
0194 )
0195 file(WRITE ${header_path}${header}
0196 "#include \"${real_path}.h\""
0197 )
0198
0199 # Add to the `install` list
0200 list(APPEND tmp ${header_path}${real_path}.h)
0201 list(APPEND tmp ${header_path}${header})
0202
0203 install(
0204 FILES
0205 ${header_path}${header}
0206 ${CMAKE_CURRENT_SOURCE_DIR}/src/${prefix}${real_path}.h
0207 DESTINATION
0208 ${CMAKE_INSTALL_FULL_INCLUDEDIR}/KQuickItemViews/${prefix}
0209 COMPONENT
0210 Headers
0211 )
0212 endforeach()
0213
0214 set(kquickitemviews_EXPORT_HDRS ${tmp} PARENT_SCOPE)
0215 endfunction()
0216
0217 process_header(adapters/ "${kquickitemviews_adapters_LIB_HDRS}")
0218 process_header(views/ "${kquickitemviews_views_LIB_HDRS}")
0219 process_header(strategies/ "${kquickitemviews_strategies_LIB_HDRS}")
0220 process_header(extensions/ "${kquickitemviews_extensions_LIB_HDRS}")
0221 process_header(proxies/ "${kquickitemviews_proxies_LIB_HDRS}")
0222 process_header("" "${kquickitemviews_LIB_HDRS}")
0223
0224 # Configure the target config
0225 set(kquickitemviews_CONFIG_PATH "${CMAKE_CURRENT_BINARY_DIR}/KQuickItemViewsConfig.cmake")
0226
0227 configure_package_config_file(
0228 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/KQuickItemViewsConfig.cmake.in" ${kquickitemviews_CONFIG_PATH}
0229 INSTALL_DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/KQuickItemViews/
0230 PATH_VARS INCLUDE_INSTALL_DIR
0231 )
0232
0233 install( FILES ${kquickitemviews_CONFIG_PATH}
0234 DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/KQuickItemViews/
0235 COMPONENT Devel
0236 )
0237
0238 # Create the target
0239 target_include_directories(kquickitemviews
0240 PUBLIC
0241 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
0242 $<INSTALL_INTERFACE:include/KQuickItemViews>
0243 PRIVATE
0244 ${CMAKE_CURRENT_SOURCE_DIR}/src/
0245 ${CMAKE_CURRENT_SOURCE_DIR}/src/private/
0246 ${CMAKE_CURRENT_BINARY_DIR}/include
0247 )
0248
0249 set_target_properties(kquickitemviews PROPERTIES
0250 PUBLIC_HEADER
0251 "${kquickitemviews_EXPORT_HDRS}"
0252 )
0253
0254 export(TARGETS kquickitemviews
0255 FILE "${PROJECT_BINARY_DIR}/cmake/KQuickItemViewsTargets.cmake"
0256 )
0257
0258 install(TARGETS kquickitemviews
0259 EXPORT KQuickItemViewsTargets
0260 LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}" COMPONENT kquickitemviews
0261 ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}
0262 RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
0263 COMPONENT Devel
0264 )
0265
0266 install(EXPORT KQuickItemViewsTargets
0267 DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/KQuickItemViews
0268 COMPONENT Devel
0269 )
0270
0271 # Allow #include <KQuickItemViews/Foo> to work both both in add_subdirectory
0272 # and on installed targets
0273 if(NOT USES_ADD_SUBDIRECTORY)
0274 install(CODE "execute_process( \
0275 COMMAND ${CMAKE_COMMAND} -E create_symlink \
0276 ${CMAKE_INSTALL_FULL_INCLUDEDIR}/KQuickItemViews \
0277 ${CMAKE_INSTALL_FULL_INCLUDEDIR}/KQuickItemViews/KQuickItemViews \
0278 )"
0279 )
0280 endif()