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()