diff --git a/CMakeLists.txt b/CMakeLists.txt index e278a1251..b09e74db4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,19 +1,17 @@ -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.13) -set(VERSION - "5.6.8" +set(DTK_VERSION + "5.6.12" CACHE STRING "define project version" ) project(DtkWidget - VERSION ${VERSION} + VERSION ${DTK_VERSION} DESCRIPTION "DTK Widget module" HOMEPAGE_URL "https://github.com/linuxdeepin/dtkwidget" LANGUAGES CXX C ) -set(LIB_NAME dtkwidget) - # Set install path if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX /usr) @@ -22,134 +20,13 @@ endif() include(GNUInstallDirs) include(CMakePackageConfigHelpers) -set(CMAKE_INCLUDE_CURRENT_DIR ON) -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -if(UNIX AND NOT APPLE) - set(LINUX TRUE) -endif() - -# Set build option -set(BUILD_PLUGINS - ON - CACHE BOOL "Build plugin and plugin example" -) - -set(INCLUDE_INSTALL_DIR - "${CMAKE_INSTALL_INCLUDEDIR}/dtk${PROJECT_VERSION_MAJOR}/DWidget" -) -set(TOOL_INSTALL_DIR - "${CMAKE_INSTALL_LIBDIR}/dtk${PROJECT_VERSION_MAJOR}/DWidget/bin" -) -set(LIBRARY_INSTALL_DIR - "${CMAKE_INSTALL_LIBDIR}" -) -set(MKSPECS_INSTALL_DIR - "${CMAKE_INSTALL_LIBDIR}/qt5/mkspecs/modules" - CACHE STRING "Install dir for qt pri files" -) -set(CONFIG_INSTALL_DIR - "${CMAKE_INSTALL_LIBDIR}/cmake/DtkWidget" - CACHE STRING "Install directory for cmake files" -) -set(PKGCONFIG_INSTALL_DIR - "${CMAKE_INSTALL_LIBDIR}/pkgconfig" - CACHE STRING "Install directory for pkgconfig files" -) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra") -set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed") -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(BUILD_TESTING ON) +if("${PROJECT_VERSION_MAJOR}" STREQUAL "5") + set(QT_VERSION_MAJOR 5) + include(dtkwidget.cmake) +elseif("${PROJECT_VERSION_MAJOR}" STREQUAL "6") + set(QT_VERSION_MAJOR "6") + set(DTK_VERSION_MAJOR "6") + include(dtkwidget.cmake) else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast") -endif() -# find_package -find_package(Dtk REQUIRED COMPONENTS Core Gui) -find_package(QT NAMES Qt5 REQUIRED COMPONENTS Core) -find_package(Qt5 REQUIRED COMPONENTS - Core - Network - Concurrent - Widgets - PrintSupport - LinguistTools - X11Extras - DBus -) -find_package(PkgConfig REQUIRED) - -file(GLOB D_HEADERS "${PROJECT_SOURCE_DIR}/include/DWidget/*") - -set(AUTOCONFIG ${CMAKE_CURRENT_BINARY_DIR}/dtkwidget_config.h) -get_filename_component(CONFIG_INCLUDE ${AUTOCONFIG} DIRECTORY) -set(CONFIG_CONTENT) -string(APPEND CONFIG_CONTENT "// This is an auto-generated config\n") - -foreach(header ${D_HEADERS}) - get_filename_component(thename ${header} NAME) - string(APPEND CONFIG_CONTENT "#define DTKWIDGET_CLASS_${thename}\n") -endforeach() - -file(WRITE ${AUTOCONFIG} ${CONFIG_CONTENT}) - -file(GLOB_RECURSE PUBLIC_HEADERS "${PROJECT_SOURCE_DIR}/include/*.h") -list(APPEND PUBLIC_HEADERS ${D_HEADERS} ${AUTOCONFIG}) - -add_subdirectory(src) -add_subdirectory(examples) -add_subdirectory(tools) - -if(BUILD_TESTING) - message("==================================") - message(" Now Testing is enabled ") - message("==================================") - enable_testing() - add_subdirectory(tests) + message(SEND_ERROR "not support Prject Version ${PROJECT_VERSION}.") endif() - -if(BUILD_PLUGINS) - message("===================================") - message(" You can build and run plugins now ") - message("===================================") - add_subdirectory(plugin) -endif() - -set(BUILD_DOCS - OFF - CACHE BOOL "Generate doxygen-based documentation" -) - -if(BUILD_DOCS) - message("===================================") - message(" You can build docs now ") - message("===================================") - add_subdirectory(docs) -endif() - -configure_package_config_file( - misc/DtkWidgetConfig.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/DtkWidgetConfig.cmake - INSTALL_DESTINATION ${CONFIG_INSTALL_DIR} - PATH_VARS TOOL_INSTALL_DIR -) - -write_basic_package_version_file( - ${CMAKE_CURRENT_BINARY_DIR}/DtkWidgetConfigVersion.cmake - VERSION ${VERSION} - COMPATIBILITY SameMajorVersion -) -install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/DtkWidgetConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/DtkWidgetConfigVersion.cmake - DESTINATION ${CONFIG_INSTALL_DIR} -) - -configure_file(misc/dtkwidget.pc.in dtkwidget.pc @ONLY) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dtkwidget.pc DESTINATION ${PKGCONFIG_INSTALL_DIR}) - -configure_file(misc/qt_lib_dtkwidget.pri.in qt_lib_dtkwidget.pri @ONLY) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_dtkwidget.pri DESTINATION ${MKSPECS_INSTALL_DIR}) diff --git a/debian/dtkwidget5-examples.install b/debian/dtkwidget5-examples.install index ed5abd301..97c3fdab0 100644 --- a/debian/dtkwidget5-examples.install +++ b/debian/dtkwidget5-examples.install @@ -1,2 +1 @@ usr/lib/*/*/*/examples/* -usr/share/dsg/configs/overrides/dtk-example/* diff --git a/debian/libdtkwidget5.install b/debian/libdtkwidget5.install index 76af5ad1a..5bb4217a1 100644 --- a/debian/libdtkwidget5.install +++ b/debian/libdtkwidget5.install @@ -1,3 +1,2 @@ usr/lib/*/lib*.so.* usr/share/*/*/translations/* -usr/share/dsg/configs/org.deepin.dtkwidget.feature-display.json diff --git a/debian/libdtkwidget5.install.amd64 b/debian/libdtkwidget5.install.amd64 index 37cd02d71..fa08da37b 100644 --- a/debian/libdtkwidget5.install.amd64 +++ b/debian/libdtkwidget5.install.amd64 @@ -1,4 +1,3 @@ usr/lib/*/lib*.so.* #usr/lib/*/libmsc.so usr/share/*/*/translations/* -usr/share/dsg/configs/org.deepin.dtkwidget.feature-display.json diff --git a/debian/libdtkwidget5.install.i386 b/debian/libdtkwidget5.install.i386 index 37cd02d71..fa08da37b 100644 --- a/debian/libdtkwidget5.install.i386 +++ b/debian/libdtkwidget5.install.i386 @@ -1,4 +1,3 @@ usr/lib/*/lib*.so.* #usr/lib/*/libmsc.so usr/share/*/*/translations/* -usr/share/dsg/configs/org.deepin.dtkwidget.feature-display.json diff --git a/debian/rules b/debian/rules index 5b7bfe122..7efc74c12 100755 --- a/debian/rules +++ b/debian/rules @@ -20,7 +20,7 @@ endif dh $@ override_dh_auto_configure: - dh_auto_configure -- -DBUILD_PLUGINS=OFF -DBUILD_DOCS=ON -DVERSION=$(_PACK_VER) + dh_auto_configure -- -DBUILD_PLUGINS=OFF -DBUILD_DOCS=ON -DDTK_VERSION=$(_PACK_VER) #override_dh_auto_configure: # dh_auto_configure -- LIB_INSTALL_DIR=/usr/lib/$(DEB_HOST_MULTIARCH) #override_dh_makeshlibs: diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index c67ec5049..5461658ff 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -1,8 +1,6 @@ -cmake_minimum_required (VERSION 3.10) - find_package (Doxygen REQUIRED) -set (QCH_INSTALL_DESTINATION ${CMAKE_INSTALLL_PREFIX}/share/qt5/doc CACHE STRING "QCH install location") +set (QCH_INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/qt${QT_VERSION_MAJOR}/doc CACHE STRING "QCH install location") set (DOXYGEN_GENERATE_HTML "YES" CACHE STRING "Doxygen HTML output") set (DOXYGEN_GENERATE_XML "YES" CACHE STRING "Doxygen XML output") @@ -12,7 +10,7 @@ set (DOXYGEN_PROJECT_NUMBER ${CMAKE_PROJECT_VERSION} CACHE STRING "") # Should b set (DOXYGEN_EXTRACT_STATIC YES) set (DOXYGEN_OUTPUT_LANGUAGE "Chinese" CACHE STRING "Doxygen Output Language") set (DOXYGEN_IMAGE_PATH ${CMAKE_CURRENT_LIST_DIR}/images/) -set (DOXYGEN_QHG_LOCATION "qhelpgenerator") +set (DOXYGEN_QHG_LOCATION "qhelpgenerator" CACHE STRING "Doxygen QHG path") set (DOXYGEN_QHP_NAMESPACE "org.deepin.dtk.widget") set (DOXYGEN_QCH_FILE "dtkwidget.qch") set (DOXYGEN_QHP_VIRTUAL_FOLDER "dtkwidget") diff --git a/dtkwidget.cmake b/dtkwidget.cmake new file mode 100644 index 000000000..c447c4b5c --- /dev/null +++ b/dtkwidget.cmake @@ -0,0 +1,132 @@ +set(LIBNAME dtk${DTK_VERSION_MAJOR}widget) +set(DtkWidget Dtk${DTK_VERSION_MAJOR}Widget) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +message(STATUS "Current Qt Version: ${QT_VERSION_MAJOR}") +message(STATUS "Current Dtk Version: ${DTK_VERSION_MAJOR}") + +set(BUILD_EXAMPLES ON CACHE BOOL "Build examples") +set(BUILD_VERSION "0" CACHE STRING "buildversion") +set(BUILD_PLUGINS ON CACHE BOOL "Build plugin and plugin example") + +set(INCLUDE_INSTALL_DIR + "${CMAKE_INSTALL_INCLUDEDIR}/dtk${PROJECT_VERSION_MAJOR}/DWidget" +) +set(TOOL_INSTALL_DIR + "${CMAKE_INSTALL_LIBDIR}/dtk${PROJECT_VERSION_MAJOR}/DWidget/bin" +) +set(LIBRARY_INSTALL_DIR + "${CMAKE_INSTALL_LIBDIR}" +) +set(MKSPECS_INSTALL_DIR + "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/mkspecs/modules" + CACHE STRING "Install dir for qt pri files" +) +set(CONFIG_CMAKE_INSTALL_DIR + "${CMAKE_INSTALL_LIBDIR}/cmake/${DtkWidget}" + CACHE STRING "Install directory for cmake files" +) +set(PKGCONFIG_INSTALL_DIR + "${CMAKE_INSTALL_LIBDIR}/pkgconfig" + CACHE STRING "Install directory for pkgconfig files" +) + +find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core + Network + Concurrent + Widgets + PrintSupport + LinguistTools + DBus) +find_package(PkgConfig REQUIRED) + +if("${QT_VERSION_MAJOR}" STREQUAL "5") + find_package(Qt5 REQUIRED COMPONENTS X11Extras) +endif() + +file(GLOB D_HEADERS "${PROJECT_SOURCE_DIR}/include/DWidget/*") + +set(AUTOCONFIG ${CMAKE_CURRENT_BINARY_DIR}/dtkwidget_config.h) +get_filename_component(CONFIG_INCLUDE ${AUTOCONFIG} DIRECTORY) +set(CONFIG_CONTENT) +string(APPEND CONFIG_CONTENT "// This is an auto-generated config\n") + +foreach(header ${D_HEADERS}) + get_filename_component(thename ${header} NAME) + string(APPEND CONFIG_CONTENT "#define DTKWIDGET_CLASS_${thename}\n") +endforeach() + +file(WRITE ${AUTOCONFIG} ${CONFIG_CONTENT}) + +file(GLOB_RECURSE PUBLIC_HEADERS "${PROJECT_SOURCE_DIR}/include/*.h") + +list(APPEND PUBLIC_HEADERS ${D_HEADERS}) +list(APPEND PUBLIC_HEADERS ${AUTOCONFIG}) + +set (BUILD_DOCS ON CACHE BOOL "Generate doxygen-based documentation") + +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +if(NOT MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -pie") + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(BUILD_TESTING ON) + endif () + string(REPLACE "-O3" "-Ofast" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) +endif() + +if (BUILD_DOCS) + add_subdirectory(docs) +endif () + +add_subdirectory(src) +if(BUILD_TESTING) + message(STATUS "==================================") + message(STATUS " Now Testing is enabled ") + message(STATUS "==================================") + enable_testing() + add_subdirectory(tests) +endif() +if(BUILD_EXAMPLES) + message(STATUS "===================================") + message(STATUS "You can build and run examples now ") + message(STATUS "===================================") + add_subdirectory(examples) +endif() +add_subdirectory(tools) + +if(BUILD_PLUGINS) + message(STATUS "===================================") + message(STATUS "Plugins will be built later") + message(STATUS "===================================") + add_subdirectory(plugin) +endif() + +configure_package_config_file(misc/DtkWidgetConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${DtkWidget}Config.cmake + INSTALL_DESTINATION ${CONFIG_CMAKE_INSTALL_DIR} + PATH_VARS TOOL_INSTALL_DIR) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${DtkWidget}ConfigVersion.cmake" + VERSION ${DTK_VERSION} + COMPATIBILITY SameMajorVersion +) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DtkWidget}Config.cmake DESTINATION ${CONFIG_CMAKE_INSTALL_DIR}) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DtkWidget}ConfigVersion.cmake DESTINATION ${CONFIG_CMAKE_INSTALL_DIR}) + +configure_file(misc/DtkWidget.pc.in ${LIBNAME}.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME}.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + +configure_file(misc/qt_lib_DtkWidget.pri.in qt_lib_DtkWidget.pri @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_DtkWidget.pri DESTINATION "${MKSPECS_INSTALL_DIR}") diff --git a/examples/PrintPreviewSettingsPlugin/CMakeLists.txt b/examples/PrintPreviewSettingsPlugin/CMakeLists.txt index 1e11cccee..c192b806c 100644 --- a/examples/PrintPreviewSettingsPlugin/CMakeLists.txt +++ b/examples/PrintPreviewSettingsPlugin/CMakeLists.txt @@ -1,6 +1,6 @@ set(PLUGIN_NAME PrintPreviewSettingsPlugin) -find_package(Qt5 REQUIRED COMPONENTS Core) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core) add_library(${PLUGIN_NAME} SHARED settingsplugin.h @@ -8,5 +8,5 @@ add_library(${PLUGIN_NAME} SHARED ) target_link_libraries(${PLUGIN_NAME} PRIVATE - ${LIB_NAME} + ${LIBNAME} ) diff --git a/examples/collections/CMakeLists.txt b/examples/collections/CMakeLists.txt index 2affe87a9..5b3776622 100644 --- a/examples/collections/CMakeLists.txt +++ b/examples/collections/CMakeLists.txt @@ -1,7 +1,7 @@ set(BIN_NAME collections) set(CMAKE_AUTOUIC ON) -find_package(Qt5 REQUIRED COMPONENTS Gui Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui Widgets) add_executable(${BIN_NAME} images.qrc @@ -50,13 +50,12 @@ add_executable(${BIN_NAME} ) target_link_libraries(${BIN_NAME} PRIVATE - Qt5::Widgets - Qt5::GuiPrivate - ${LIB_NAME} + Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::Gui + Qt${QT_VERSION_MAJOR}::GuiPrivate + ${LIBNAME} ) install( TARGETS ${BIN_NAME} DESTINATION "${CMAKE_INSTALL_LIBDIR}/dtk${PROJECT_VERSION_MAJOR}/DWidget/examples/" ) - -dconfig_override_files(APPID dtk-example META_NAME org.deepin.dtkwidget.feature-display FILES ${CMAKE_CURRENT_LIST_DIR}/org.deepin.dtkwidget.feature-display.json) diff --git a/linglong.yaml b/linglong.yaml index 5d7568a3c..c862e4f42 100644 --- a/linglong.yaml +++ b/linglong.yaml @@ -30,7 +30,7 @@ variables: extra_args: | -DBUILD_EXAMPLES=OFF \ -DBUILD_DOCS=OFF \ - -DVERSION=${VERSION} + -DDTK_VERSION=${VERSION} build: kind: cmake diff --git a/misc/DtkWidget.pc.in b/misc/DtkWidget.pc.in new file mode 100644 index 000000000..3c6106691 --- /dev/null +++ b/misc/DtkWidget.pc.in @@ -0,0 +1,11 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${prefix}/@LIBRARY_INSTALL_DIR@ +includedir=${prefix}/@INCLUDE_INSTALL_DIR@ + +Name: dtk@DTK_VERSION_MAJOR@widget +Description: Deepin Tool Kit dtkwidget header files +Version: @CMAKE_PROJECT_VERSION@ +Libs: -L${libdir} -ldtk@DTK_VERSION_MAJOR@widget +Cflags: -I${includedir} +Requires: dtk@DTK_VERSION_MAJOR@core dtk@DTK_VERSION_MAJOR@gui Qt@QT_VERSION_MAJOR@Core Qt@QT_VERSION_MAJOR@Widgets Qt@QT_VERSION_MAJOR@DBus Qt@QT_VERSION_MAJOR@Network Qt@QT_VERSION_MAJOR@PrintSupport diff --git a/misc/DtkWidgetConfig.cmake.in b/misc/DtkWidgetConfig.cmake.in index 17a96bd70..20cf3e97d 100644 --- a/misc/DtkWidgetConfig.cmake.in +++ b/misc/DtkWidgetConfig.cmake.in @@ -1,17 +1,17 @@ @PACKAGE_INIT@ include(CMakeFindDependencyMacro) -find_dependency(DtkCore) -find_dependency(DtkGui) +find_dependency(Dtk@DTK_VERSION_MAJOR@Core) +find_dependency(Dtk@DTK_VERSION_MAJOR@Gui) find_dependency(Qt@QT_VERSION_MAJOR@Core) find_dependency(Qt@QT_VERSION_MAJOR@Widgets) find_dependency(Qt@QT_VERSION_MAJOR@DBus) find_dependency(Qt@QT_VERSION_MAJOR@Network) find_dependency(Qt@QT_VERSION_MAJOR@PrintSupport) -include(${CMAKE_CURRENT_LIST_DIR}/DtkWidgetTargets.cmake) -set(DtkWidget_LIBRARIES Dtk::Widget) -get_target_property(DtkWidget_INCLUDE_DIRS Dtk::Widget INTERFACE_INCLUDE_DIRECTORIES) -get_target_property(DtkWidget_LIBRARY_DIRS Dtk::Widget INTERFACE_LINK_DIRECTORIES) +include(${CMAKE_CURRENT_LIST_DIR}/Dtk@DTK_VERSION_MAJOR@WidgetTargets.cmake) +set(DtkWidget_LIBRARIES Dtk@DTK_VERSION_MAJOR@::Widget) +get_target_property(DtkWidget_INCLUDE_DIRS Dtk@DTK_VERSION_MAJOR@::Widget INTERFACE_INCLUDE_DIRECTORIES) +get_target_property(DtkWidget_LIBRARY_DIRS Dtk@DTK_VERSION_MAJOR@::Widget INTERFACE_LINK_DIRECTORIES) set(DtkWidget_TOOL_DIRS "@PACKAGE_TOOL_INSTALL_DIR@") check_required_components(DtkWidget) diff --git a/misc/dtkwidget.pc.in b/misc/dtkwidget.pc.in deleted file mode 100644 index 3d51dae26..000000000 --- a/misc/dtkwidget.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=${prefix} -libdir=${prefix}/@LIBRARY_INSTALL_DIR@ -includedir=${prefix}/@INCLUDE_INSTALL_DIR@ - -Name: dtkwidget -Description: Deepin Tool Kit dtkwidget header files -Version: @PROJECT_VERSION@ -Libs: -L${libdir} -ldtkwidget -Cflags: -I${includedir} -Requires: dtkcore dtkgui Qt@QT_VERSION_MAJOR@Core Qt@QT_VERSION_MAJOR@Widgets Qt@QT_VERSION_MAJOR@DBus Qt@QT_VERSION_MAJOR@Network Qt@QT_VERSION_MAJOR@PrintSupport diff --git a/misc/qt_lib_dtkwidget.pri.in b/misc/qt_lib_DtkWidget.pri.in similarity index 93% rename from misc/qt_lib_dtkwidget.pri.in rename to misc/qt_lib_DtkWidget.pri.in index c4e64e0d0..623878d30 100644 --- a/misc/qt_lib_dtkwidget.pri.in +++ b/misc/qt_lib_DtkWidget.pri.in @@ -3,7 +3,7 @@ QT.dtkwidget.MAJOR_VERSION = @PROJECT_VERSION_MAJOR@ QT.dtkwidget.MINOR_VERSION = @PROJECT_VERSION_MINOR@ QT.dtkwidget.PATCH_VERSION = @PROJECT_VERSION_PATCH@ QT.dtkwidget.name = dtkwidget -QT.dtkwidget.module = dtkwidget +QT.dtkwidget.module = dtk@DTK_VERSION_MAJOR@widget QT.dtkwidget.tools = @CMAKE_INSTALL_PREFIX@/@TOOL_INSTALL_DIR@ QT.dtkwidget.libs = @CMAKE_INSTALL_PREFIX@/@LIBRARY_INSTALL_DIR@ QT.dtkwidget.includes = @CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_DIR@ diff --git a/plugin/dtkuidemo/CMakeLists.txt b/plugin/dtkuidemo/CMakeLists.txt index 3ca1d807c..f7441752f 100644 --- a/plugin/dtkuidemo/CMakeLists.txt +++ b/plugin/dtkuidemo/CMakeLists.txt @@ -16,6 +16,7 @@ add_executable( target_link_libraries(${DEMO} PRIVATE Qt${QT_VERSION_MAJOR}::Core + Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::GuiPrivate - ${LIB_NAME} + ${LIBNAME} ) diff --git a/plugin/dtkuiplugin/CMakeLists.txt b/plugin/dtkuiplugin/CMakeLists.txt index ad2c5a3a7..528448faa 100644 --- a/plugin/dtkuiplugin/CMakeLists.txt +++ b/plugin/dtkuiplugin/CMakeLists.txt @@ -1,26 +1,23 @@ -cmake_minimum_required(VERSION 3.10) - set(UIPLUGIN dtkuiplugin) project(${UIPLUGIN} VERSION 1.0.0 LANGUAGES CXX) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS UiPlugin Gui) -set(LIB_DWIDGET ${LIB_NAME}) +set(LIB_DWIDGET ${LIBNAME}) if (CMAKE_PROJECT_NAME STREQUAL ${UIPLUGIN}) - message("compile ${UIPLUGIN} individually") + message(STATUS "compile ${UIPLUGIN} individually") set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) - set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) include(GNUInstallDirs) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX /usr) endif() - find_package(DtkWidget REQUIRED) - set(LIB_DWIDGET Dtk::Widget) + find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENT Widget) + set(LIB_DWIDGET Dtk${DTK_VERSION_MAJOR}::Widget) endif() add_library( @@ -40,7 +37,7 @@ target_link_libraries( set(INSTALL_PLUGIN OFF CACHE BOOL "Install dtk designer plugin") if(INSTALL_PLUGIN) - set(QT_PLUGIN_DESIGNER_PATH "qt5/plugins/designer") + set(QT_PLUGIN_DESIGNER_PATH "qt${QT_VERSION_MAJOR}/plugins/designer") install(TARGETS ${UIPLUGIN} DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/${QT_PLUGIN_DESIGNER_PATH}") message(STATUS "Install path:" "${CMAKE_INSTALL_FULL_LIBDIR}/${QT_PLUGIN_DESIGNER_PATH}") endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index aad61aaa2..795075076 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,6 @@ -pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt) +if("${QT_VERSION_MAJOR}" STREQUAL "5") + pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt) #Dtk6 removed. +endif() pkg_check_modules(XcbUtil REQUIRED IMPORTED_TARGET xcb-util) pkg_check_modules(StartupNotification REQUIRED IMPORTED_TARGET libstartup-notification-1.0) pkg_check_modules(Xext REQUIRED IMPORTED_TARGET xext) @@ -9,9 +11,13 @@ include(util/util.cmake) include(widgets/widgets.cmake) file(GLOB TRANSLATIONS translations/*.ts) -qt5_add_translation(QM_FILES ${TRANSLATIONS}) +if("${QT_VERSION_MAJOR}" STREQUAL "5") + qt5_add_translation(QM_FILES ${TRANSLATIONS}) +else() + qt6_add_translation(QM_FILES ${TRANSLATIONS}) +endif() -add_library(${LIB_NAME} SHARED +add_library(${LIBNAME} SHARED ${WIDGETS} ${QM_FILES} ${UTIL} @@ -22,7 +28,7 @@ set(TRANSLATIONS_INSTALL_DIR "dtk${PROJECT_VERSION_MAJOR}/DWidget/translations" ) -target_compile_definitions(${LIB_NAME} PRIVATE +target_compile_definitions(${LIBNAME} PRIVATE SN_API_NOT_YET_FROZEN DTK_NO_MULTIMEDIA DWIDGET_TRANSLATIONS_DIR="${TRANSLATIONS_INSTALL_DIR}" @@ -30,12 +36,12 @@ target_compile_definitions(${LIB_NAME} PRIVATE ) if(DTK_STATIC_TRANSLATION) -target_compile_definitions(${LIB_NAME} PRIVATE +target_compile_definitions(${LIBNAME} PRIVATE DTK_STATIC_TRANSLATION ) endif() -target_include_directories(${LIB_NAME} +target_include_directories(${LIBNAME} PUBLIC $ $ @@ -47,22 +53,20 @@ INTERFACE $ ) -target_link_libraries(${LIB_NAME} +target_link_libraries(${LIBNAME} PUBLIC - Qt5::Widgets - Qt5::Network - Qt5::Core - Qt5::DBus - Qt5::PrintSupport - Dtk::Gui - Dtk::Core + Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::Network + Qt${QT_VERSION_MAJOR}::Core + Qt${QT_VERSION_MAJOR}::DBus + Qt${QT_VERSION_MAJOR}::PrintSupport + Dtk${DTK_VERSION_MAJOR}::Gui + Dtk${DTK_VERSION_MAJOR}::Core PRIVATE - Qt5::Concurrent - Qt5::X11Extras - Qt5::GuiPrivate - Qt5::WidgetsPrivate - Qt5::PrintSupportPrivate - PkgConfig::QGSettings + Qt${QT_VERSION_MAJOR}::Concurrent + Qt${QT_VERSION_MAJOR}::GuiPrivate + Qt${QT_VERSION_MAJOR}::WidgetsPrivate + Qt${QT_VERSION_MAJOR}::PrintSupportPrivate PkgConfig::StartupNotification PkgConfig::Xext PkgConfig::Xi @@ -70,12 +74,19 @@ PRIVATE PkgConfig::XcbUtil ) -target_link_directories(${LIB_NAME} INTERFACE +if("${QT_VERSION_MAJOR}" STREQUAL "5") + target_link_libraries(${LIBNAME} PRIVATE + PkgConfig::QGSettings + Qt5::X11Extras + ) +endif() + +target_link_directories(${LIBNAME} INTERFACE $ $ ) -set_target_properties(${LIB_NAME} +set_target_properties(${LIBNAME} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} @@ -83,19 +94,17 @@ set_target_properties(${LIB_NAME} PUBLIC_HEADER "${PUBLIC_HEADERS}" ) install( - TARGETS ${LIB_NAME} - EXPORT DtkWidgetTargets + TARGETS ${LIBNAME} + EXPORT ${DtkWidget}Targets DESTINATION ${LIBRARY_INSTALL_DIR} PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR} ) install( - EXPORT DtkWidgetTargets - FILE DtkWidgetTargets.cmake - NAMESPACE Dtk:: - DESTINATION ${CONFIG_INSTALL_DIR} + EXPORT ${DtkWidget}Targets + NAMESPACE Dtk${DTK_VERSION_MAJOR}:: + FILE ${DtkWidget}Targets.cmake + DESTINATION "${CONFIG_CMAKE_INSTALL_DIR}" ) install(FILES ${QM_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/${TRANSLATIONS_INSTALL_DIR}") - -dconfig_meta_files(COMMONID org.deepin.dtkwidget FILES ${CMAKE_CURRENT_LIST_DIR}/org.deepin.dtkwidget.feature-display.json) diff --git a/src/widgets/widgets.cmake b/src/widgets/widgets.cmake index f01f02f46..a2294bf52 100644 --- a/src/widgets/widgets.cmake +++ b/src/widgets/widgets.cmake @@ -7,6 +7,7 @@ file(GLOB SETTINGS ${CMAKE_CURRENT_LIST_DIR}/private/settings/*) file(GLOB NOTIFICATIONS ${CMAKE_CURRENT_LIST_DIR}/private/startupnotifications/*) file(GLOB KEYBOARD ${CMAKE_CURRENT_LIST_DIR}/private/keyboardmonitor/*) file(GLOB_RECURSE RESOURCES ${CMAKE_CURRENT_LIST_DIR}/*.qrc) + set(WIDGETS ${MPRIS_HEADERS} ${MPRIS_SOURCES} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6bc932dc5..eb51d202d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,9 +1,12 @@ -set(BIN_NAME "ut-${LIB_NAME}") +set(BINNAME "ut-${LIBNAME}") -find_package(Qt5 REQUIRED COMPONENTS Test) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test) find_package(GTest REQUIRED) -pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt) +if("${QT_VERSION_MAJOR}" STREQUAL "5") + pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt) #Dtk6 removed. +endif() + pkg_check_modules(XcbUtil REQUIRED IMPORTED_TARGET xcb-util) pkg_check_modules(StartupNotification REQUIRED IMPORTED_TARGET libstartup-notification-1.0) pkg_check_modules(Xext REQUIRED IMPORTED_TARGET xext) @@ -109,7 +112,7 @@ include(${PROJECT_SOURCE_DIR}/src/widgets/widgets.cmake) set(RESCOUCES data.qrc) -add_executable(${BIN_NAME} +add_executable(${BINNAME} main.cpp ${UTIL} ${WIDGETS} @@ -117,23 +120,23 @@ add_executable(${BIN_NAME} ${PUBLIC_HEADERS} ) -target_compile_definitions(${BIN_NAME} PRIVATE +target_compile_definitions(${BINNAME} PRIVATE SN_API_NOT_YET_FROZEN DTK_NO_MULTIMEDIA DWIDGET_TRANSLATIONS_DIR="dtk${PROJECT_VERSION_MAJOR}/DWidget/translations" ) if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - target_compile_options(${BIN_NAME} PRIVATE -fprofile-instr-generate -ftest-coverage) + target_compile_options(${BINNAME} PRIVATE -fprofile-instr-generate -ftest-coverage) endif() if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_options(${BIN_NAME} PRIVATE -fprofile-arcs -ftest-coverage) + target_compile_options(${BINNAME} PRIVATE -fprofile-arcs -ftest-coverage) endif() -target_compile_options(${BIN_NAME} PRIVATE -fno-access-control -fsanitize=address) -target_link_options(${BIN_NAME} PRIVATE -fsanitize=address) +target_compile_options(${BINNAME} PRIVATE -fno-access-control -fsanitize=address) +target_link_options(${BINNAME} PRIVATE -fsanitize=address) -target_include_directories(${BIN_NAME} PRIVATE +target_include_directories(${BINNAME} PRIVATE ${PROJECT_SOURCE_DIR}/src/widgets ${PROJECT_SOURCE_DIR}/include/DWidget ${PROJECT_SOURCE_DIR}/include/util @@ -143,26 +146,25 @@ target_include_directories(${BIN_NAME} PRIVATE ${CONFIG_INCLUDE} ) -target_link_libraries(${BIN_NAME} PRIVATE - Qt5::Test - Qt5::Widgets - Qt5::WidgetsPrivate - Qt5::Core - Qt5::GuiPrivate - Qt5::DBus - Qt5::PrintSupport - Qt5::PrintSupportPrivate - Qt5::Concurrent - Qt5::X11Extras - Qt5::Network - PkgConfig::QGSettings +target_link_libraries(${BINNAME} PRIVATE + Qt${QT_VERSION_MAJOR}::Test + Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::WidgetsPrivate + Qt${QT_VERSION_MAJOR}::Core + Qt${QT_VERSION_MAJOR}::Gui + Qt${QT_VERSION_MAJOR}::GuiPrivate + Qt${QT_VERSION_MAJOR}::DBus + Qt${QT_VERSION_MAJOR}::PrintSupport + Qt${QT_VERSION_MAJOR}::PrintSupportPrivate + Qt${QT_VERSION_MAJOR}::Concurrent + Qt${QT_VERSION_MAJOR}::Network PkgConfig::StartupNotification PkgConfig::Xext PkgConfig::Xi PkgConfig::X11 PkgConfig::XcbUtil - Dtk::Gui - Dtk::Core + Dtk${DTK_VERSION_MAJOR}::Gui + Dtk${DTK_VERSION_MAJOR}::Core GTest::GTest gmock pthread @@ -170,4 +172,11 @@ target_link_libraries(${BIN_NAME} PRIVATE gcov ) -add_test(NAME ${BIN_NAME} COMMAND ${BIN_NAME}) +if("${QT_VERSION_MAJOR}" STREQUAL "5") + target_link_libraries(${BINNAME} PRIVATE + PkgConfig::QGSettings + Qt5::X11Extras + ) +endif() + +add_test(NAME ${BINNAME} COMMAND ${BINNAME}) diff --git a/tools/svgc/CMakeLists.txt b/tools/svgc/CMakeLists.txt index 2a04e9b9e..885eb8561 100644 --- a/tools/svgc/CMakeLists.txt +++ b/tools/svgc/CMakeLists.txt @@ -1,7 +1,8 @@ -set(BIN_NAME dtk-svgc) +set(TARGET_NAME dtk-svgc) +set(BIN_NAME ${TARGET_NAME}${DTK_VERSION_MAJOR}) -find_package(Dtk REQUIRED COMPONENTS Gui) -find_package(Qt5 REQUIRED COMPONENTS Svg) +find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Gui) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Svg) add_executable( ${BIN_NAME} @@ -10,8 +11,8 @@ add_executable( target_link_libraries( ${BIN_NAME} PRIVATE - Qt5::Svg - Dtk::Gui + Qt${QT_VERSION_MAJOR}::Svg + Dtk${DTK_VERSION_MAJOR}::Gui ) install(TARGETS ${BIN_NAME} DESTINATION "${TOOL_INSTALL_DIR}")