qt-material-widgets/CMakeLists.txt

190 lines
6.5 KiB
CMake

cmake_minimum_required(VERSION 3.14)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
include(prelude)
project(
qt-material-widgets
VERSION 0.1.0
DESCRIPTION "Qt Material Design Desktop Widgets"
LANGUAGES CXX
)
include(project-is-top-level)
include(variables)
include(link_qt)
if(NOT Qt6_FOUND)
qt5_add_resources(
style_res
${CMAKE_CURRENT_SOURCE_DIR}/source/qt_material_widgets.qrc
)
else()
qt_add_resources(
style_res
${CMAKE_CURRENT_SOURCE_DIR}/source/qt_material_widgets.qrc
)
endif()
add_library(
qt-material-widgets
${style_res}
include/qt-material-widgets/component/qtmaterialappbar.h
include/qt-material-widgets/component/qtmaterialautocomplete.h
include/qt-material-widgets/component/qtmaterialavatar.h
include/qt-material-widgets/component/qtmaterialbadge.h
include/qt-material-widgets/component/qtmaterialcheckbox.h
include/qt-material-widgets/component/qtmaterialcircularprogress.h
include/qt-material-widgets/component/qtmaterialdialog.h
include/qt-material-widgets/component/qtmaterialdrawer.h
include/qt-material-widgets/component/qtmaterialfab.h
include/qt-material-widgets/component/qtmaterialflatbutton.h
include/qt-material-widgets/component/qtmaterialiconbutton.h
include/qt-material-widgets/component/qtmateriallist.h
include/qt-material-widgets/component/qtmateriallistitem.h
include/qt-material-widgets/component/qtmaterialmenu.h
include/qt-material-widgets/component/qtmaterialpaper.h
include/qt-material-widgets/component/qtmaterialprogress.h
include/qt-material-widgets/component/qtmaterialradiobutton.h
include/qt-material-widgets/component/qtmaterialraisedbutton.h
include/qt-material-widgets/component/qtmaterialscrollbar.h
include/qt-material-widgets/component/qtmaterialslider.h
include/qt-material-widgets/component/qtmaterialsnackbar.h
include/qt-material-widgets/component/qtmaterialtable.h
include/qt-material-widgets/component/qtmaterialtabs.h
include/qt-material-widgets/component/qtmaterialtextfield.h
include/qt-material-widgets/component/qtmaterialtoggle.h
include/qt-material-widgets/layouts/qtmaterialsnackbarlayout.h
include/qt-material-widgets/lib/qtmaterialcheckable.h
include/qt-material-widgets/lib/qtmaterialoverlaywidget.h
include/qt-material-widgets/lib/qtmaterialripple.h
include/qt-material-widgets/lib/qtmaterialrippleoverlay.h
include/qt-material-widgets/lib/qtmaterialstatetransition.h
include/qt-material-widgets/lib/qtmaterialstatetransitionevent.h
include/qt-material-widgets/lib/qtmaterialstyle.h
include/qt-material-widgets/lib/qtmaterialtheme.h
source/component/qtmaterialappbar.cpp
source/component/qtmaterialautocomplete.cpp
source/component/qtmaterialautocomplete_internal.cpp
source/component/qtmaterialavatar.cpp
source/component/qtmaterialbadge.cpp
source/component/qtmaterialcheckbox.cpp
source/component/qtmaterialcircularprogress.cpp
source/component/qtmaterialcircularprogress_internal.cpp
source/component/qtmaterialdialog.cpp
source/component/qtmaterialdialog_internal.cpp
source/component/qtmaterialdrawer.cpp
source/component/qtmaterialdrawer_internal.cpp
source/component/qtmaterialfab.cpp
source/component/qtmaterialflatbutton.cpp
source/component/qtmaterialflatbutton_internal.cpp
source/component/qtmaterialiconbutton.cpp
source/component/qtmateriallist.cpp
source/component/qtmateriallistitem.cpp
source/component/qtmaterialmenu.cpp
source/component/qtmaterialmenu_internal.cpp
source/component/qtmaterialpaper.cpp
source/component/qtmaterialprogress.cpp
source/component/qtmaterialprogress_internal.cpp
source/component/qtmaterialradiobutton.cpp
source/component/qtmaterialraisedbutton.cpp
source/component/qtmaterialscrollbar.cpp
source/component/qtmaterialscrollbar_internal.cpp
source/component/qtmaterialslider.cpp
source/component/qtmaterialslider_internal.cpp
source/component/qtmaterialsnackbar.cpp
source/component/qtmaterialsnackbar_internal.cpp
source/component/qtmaterialtable.cpp
source/component/qtmaterialtabs.cpp
source/component/qtmaterialtabs_internal.cpp
source/component/qtmaterialtextfield.cpp
source/component/qtmaterialtextfield_internal.cpp
source/component/qtmaterialtoggle.cpp
source/component/qtmaterialtoggle_internal.cpp
source/layouts/qtmaterialsnackbarlayout.cpp
source/lib/qtmaterialcheckable.cpp
source/lib/qtmaterialcheckable_internal.cpp
source/lib/qtmaterialoverlaywidget.cpp
source/lib/qtmaterialripple.cpp
source/lib/qtmaterialrippleoverlay.cpp
source/lib/qtmaterialstatetransition.cpp
source/lib/qtmaterialstyle.cpp
source/lib/qtmaterialtheme.cpp
)
add_library(qt-material-widgets::qt-material-widgets ALIAS qt-material-widgets)
target_link_libraries(qt-material-widgets PUBLIC ${QT_LIBRARIES})
include(GenerateExportHeader)
generate_export_header(
qt-material-widgets
BASE_NAME qt-material-widgets
EXPORT_FILE_NAME export/qt-material-widgets/qt-material-widgets_export.hpp
CUSTOM_CONTENT_FROM_VARIABLE pragma_suppress_c4251
)
if(NOT BUILD_SHARED_LIBS)
target_compile_definitions(qt-material-widgets PUBLIC QT_MATERIAL_WIDGETS_STATIC_DEFINE)
endif()
set_target_properties(
qt-material-widgets PROPERTIES
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN YES
VERSION "${PROJECT_VERSION}"
SOVERSION "${PROJECT_VERSION_MAJOR}"
EXPORT_NAME qt-material-widgets
OUTPUT_NAME qt-material-widgets
)
target_include_directories(
qt-material-widgets ${warning_guard}
PUBLIC
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
)
target_include_directories(
qt-material-widgets SYSTEM
PUBLIC
"$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/export>"
)
target_include_directories(
qt-material-widgets ${warning_guard}
PRIVATE
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/qt-material-widgets>"
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/qt-material-widgets/component>"
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/source>"
)
target_compile_features(qt-material-widgets PUBLIC cxx_std_11)
# ---- Install rules ----
# if(NOT CMAKE_SKIP_INSTALL_RULES)
# include(install-rules)
# endif()
# ---- Examples ----
if(PROJECT_IS_TOP_LEVEL)
option(BUILD_EXAMPLES "Build examples tree." "${qt-material-widgets_DEVELOPER_MODE}")
if(BUILD_EXAMPLES)
set(PROJECT_ROOT_DIR ${PROJECT_SOURCE_DIR})
add_subdirectory(example)
endif()
endif()
# ---- Developer mode ----
if(NOT qt-material-widgets_DEVELOPER_MODE)
return()
elseif(NOT PROJECT_IS_TOP_LEVEL)
message(
AUTHOR_WARNING
"Developer mode is intended for developers of qt-material-widgets"
)
endif()
include(dev-mode)