2026-04-06 00:20:51 -05:00

201 lines
9.5 KiB
CMake

# Declare files.
set(SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/src/animation/WidgetAnimationManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/animation/WidgetAnimator.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/resources/ResourceInitialization.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/eventFilters/ComboboxItemViewFilter.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/eventFilters/CommandLinkButtonEventFilter.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/eventFilters/LineEditButtonEventFilter.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/eventFilters/LineEditMenuEventFilter.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/eventFilters/MenuEventFilter.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/eventFilters/MouseWheelBlockerEventFilter.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/eventFilters/TabBarEventFilter.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/eventFilters/TextEditEventFilter.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/eventFilters/WidgetWithFocusFrameEventFilter.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/Delegates.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/EventFilters.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/EventFilters.hpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/QlementineStyle.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/Theme.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/style/ThemeManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/tools/ThemeEditor.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/BadgeUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ColorUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/FontUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/GeometryUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/IconUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ImageUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/LayoutUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/MenuUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/PrimitiveUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/RadiusesF.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/StateUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/StyleUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/WidgetUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/AboutDialog.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/AbstractItemListWidget.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/Action.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/ActionButton.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/ColorButton.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/ColorEditor.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/CommandLinkButton.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/Expander.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/IconWidget.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/Label.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/LineEdit.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/LoadingSpinner.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/Menu.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/NavigationBar.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/NotificationBadge.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/PlainTextEdit.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/Popover.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/PopoverButton.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/RoundedFocusFrame.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/SegmentedControl.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/StatusBadgeWidget.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/Switch.cpp
)
set(HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/animation/WidgetAnimation.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/animation/WidgetAnimationManager.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/animation/WidgetAnimator.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/Common.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/resources/ResourceInitialization.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/style/Delegates.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/style/QlementineStyle.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/style/QlementineStyleOption.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/style/Theme.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/style/ThemeManager.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/tools/ThemeEditor.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/BadgeUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/BlurUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/ColorUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/FontUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/GeometryUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/IconUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/ImageUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/LayoutUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/MenuUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/PrimitiveUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/RadiusesF.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/StateUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/StyleUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/utils/WidgetUtils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/AboutDialog.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/AbstractItemListWidget.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/Action.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/ActionButton.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/ColorButton.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/ColorEditor.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/CommandLinkButton.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/Expander.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/IconWidget.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/Label.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/LineEdit.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/LoadingSpinner.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/Menu.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/NavigationBar.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/NotificationBadge.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/PlainTextEdit.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/Popover.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/PopoverButton.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/RoundedFocusFrame.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/SegmentedControl.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/StatusBadgeWidget.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/oclero/qlementine/widgets/Switch.hpp
)
set(RESOURCES
resources/qlementine.qrc
resources/qlementine_font_inter.qrc
resources/qlementine_font_roboto.qrc
)
# Create target.
qt_add_library(${PROJECT_NAME} STATIC
${HEADERS}
${SOURCES}
${RESOURCES}
)
include(CMakePackageConfigHelpers)
target_include_directories(${PROJECT_NAME}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
)
target_link_libraries(${PROJECT_NAME}
PUBLIC
Qt::Core
Qt::Widgets
Qt::Svg
)
set_target_properties(${PROJECT_NAME}
PROPERTIES
OUTPUT_NAME ${PROJECT_NAME}
PROJECT_LABEL ${PROJECT_NAME}
FOLDER lib
SOVERSION ${PROJECT_VERSION_MAJOR}
VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
DEBUG_POSTFIX _debug
CMAKE_AUTORCC ON
CMAKE_AUTOMOC ON
CMAKE_AUTOUIC ON
)
target_compile_options(${PROJECT_NAME}
PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:/MP /WX /W4>
$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wall -Wextra -Werror>
)
# Create source groups.
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}
FILES
${HEADERS}
${SOURCES}
)
# Select correct startup project in Visual Studio.
if(WIN32)
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME})
endif()
# Install target
configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.cmake.in"
"${CMAKE_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake"
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
write_basic_package_version_file("${CMAKE_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake"
VERSION "${PROJECT_VERSION}"
COMPATIBILITY AnyNewerVersion)
install(TARGETS ${PROJECT_NAME}
EXPORT "${PROJECT_NAME}Targets"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
install(EXPORT "${PROJECT_NAME}Targets"
FILE "${PROJECT_NAME}Targets.cmake"
NAMESPACE ${PROJECT_NAME}::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
install(FILES
"${CMAKE_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake"
"${CMAKE_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
export(EXPORT "${PROJECT_NAME}Targets"
FILE "${CMAKE_BINARY_DIR}/cmake/${PROJECT_NAME}Targets.cmake"
NAMESPACE ${PROJECT_NAME}::)