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