diff --git a/CMakeLists.txt b/CMakeLists.txt index 3683d846..f0270758 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,22 +1,28 @@ cmake_minimum_required(VERSION 3.25) -file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" DTK_FILE_VERSION) -string(STRIP "${DTK_FILE_VERSION}" DTK_FILE_VERSION) -set(DTK_VERSION "${DTK_FILE_VERSION}" CACHE STRING "define project version") +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" FILE_VERSION) +string(STRIP "${FILE_VERSION}" FILE_VERSION) + project(DtkGui - VERSION ${DTK_VERSION} + VERSION ${FILE_VERSION} DESCRIPTION "DTK Gui module" HOMEPAGE_URL "https://github.com/linuxdeepin/dtkgui" LANGUAGES CXX C ) -if("${PROJECT_VERSION_MAJOR}" STREQUAL "5") - set(QT_VERSION_MAJOR "5") -elseif("${PROJECT_VERSION_MAJOR}" STREQUAL "6") - set(QT_VERSION_MAJOR "6") - set(DTK_VERSION_MAJOR "6") +# 引入 DTK5/DTK6 构建选项 +option(DTK5 "Build DTK5." ON) +if(DTK5) + set(DTK_VERSION_MAJOR "5") + set(DTK_NAME_SUFFIX "") # DTK5 产品名称后缀为空 else() - message(SEND_ERROR "not support Prject Version ${PROJECT_VERSION}.") + set(DTK_VERSION_MAJOR "6") + set(DTK_NAME_SUFFIX "6") # DTK6 产品名称后缀为 "6" endif() +set(DTK_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(DTK_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +set(DTK_VERSION "${DTK_VERSION_MAJOR}.${DTK_VERSION_MINOR}.${DTK_VERSION_PATCH}") +set(QT_VERSION_MAJOR ${DTK_VERSION_MAJOR}) + include(dtkgui.cmake) diff --git a/archlinux/PKGBUILD b/archlinux/PKGBUILD index 0c8ad6e1..0ab222b7 100644 --- a/archlinux/PKGBUILD +++ b/archlinux/PKGBUILD @@ -28,7 +28,7 @@ build() { -DQCH_INSTALL_DESTINATION=share/doc/qt \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=Release + -DDTK5=ON ninja # INFO: Another cmake option is DTK_DISABLE_EX_IMAGE_FORMAT # If you not want to support RAW images, set it to off diff --git a/debian/control b/debian/control index 8096f9e7..486a54c1 100644 --- a/debian/control +++ b/debian/control @@ -1,46 +1,117 @@ Source: dtkgui Section: libdevel Priority: optional -Maintainer: Deepin Packages Builder -Build-Depends: debhelper-compat (= 12), pkg-config, - qtbase5-private-dev, qtbase5-dev-tools, doxygen, graphviz, qttools5-dev, - libdtkcore-dev, librsvg2-dev, libfreeimage-dev, libraw-dev, libgtest-dev, libgmock-dev, - libqt5xdg-dev, libqt5xdgiconloader-dev, cmake, qt5-image-formats-plugins, libqt5waylandclient5-dev, - extra-cmake-modules, qtwayland5-dev-tools, qtwayland5-private-dev, libkf5wayland-dev, treeland-protocols +Maintainer: Shanshan Ye +Build-Depends: debhelper-compat (= 12), + cmake, + pkg-config, + libgtest-dev, + libgmock-dev, + libdtkcommon-dev, + librsvg2-dev, + libfreeimage-dev, + libraw-dev, + treeland-protocols, + extra-cmake-modules, + libdtkcore-dev , + qtbase5-dev-tools , + qtbase5-private-dev , + qttools5-dev , + libqt5xdg-dev , + libqt5xdgiconloader-dev , + libqt5waylandclient5-dev , + qtwayland5-dev-tools , + qtwayland5-private-dev , + libkf5wayland-dev , + qt5-image-formats-plugins , + libdtk6core-dev , + qt6-base-dev-tools , + qt6-base-dev , + qt6-base-private-dev , + qt6-tools-dev , + qt6-wayland-dev-tools , + qt6-wayland-dev , + qt6-wayland-private-dev , + doxygen , + graphviz Standards-Version: 3.9.8 +Package: libdtk6gui +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkdata, + qt6-image-formats-plugins +Multi-Arch: same +Build-Profiles: +Description: Development ToolKit Gui Library (DTK6 with Qt6) + DTK Gui is the base library of deepin Qt/C++ applications. + . + This package contains the shared libraries for DTK6 applications. + +Package: libdtk6gui-bin +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, + libdtk6gui( =${binary:Version}) +Build-Profiles: +Description: Development ToolKit Gui Utilities (DTK6 with Qt6) + DTK Gui is the base library of deepin Qt/C++ applications. + . + This package contains the utilities of DTK6 Gui. + +Package: libdtk6gui-dev +Architecture: any +Depends: libdtk6gui( =${binary:Version}), + libdtkcommon-dev(>=5.6.16), libdtk6core-dev +Build-Profiles: +Description: Development ToolKit Gui Devel Library (DTK6 with Qt6) + DTK Gui is the base library of deepin Qt/C++ applications. + . + This package contains the header files and development library symbolic links of DTK6 Gui. + +Package: libdtk6gui-doc +Build-Profiles: +Architecture: any +Depends: ${misc:Depends} +Description: Development ToolKit Gui (Document) + DTK Gui is the base library of deepin Qt/C++ applications. + . + This package contains the qt Document of DTK6 Gui. + Package: libdtkgui5 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkdata, qt5-image-formats-plugins Multi-Arch: same -Description: Deepin Tool Kit Gui library - DtkGui is base library of Deepin Qt/C++ applications. +Build-Profiles: +Description: Development ToolKit Gui Library (DTK5 with Qt5) + DTK Gui is the base library of deepin Qt/C++ applications. . - This package contains the shared libraries. + This package contains the shared libraries for DTK5 applications. Package: libdtkgui5-bin Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkgui5( =${binary:Version}) -Description: Deepin Tool Kit Gui Utilities - DtkGui is base devel library of Deepin Qt/C++ applications. +Build-Profiles: +Description: Development ToolKit Gui Utilities (DTK5 with Qt5) + DTK Gui is the base library of deepin Qt/C++ applications. . - This package contains the utilities of DtkGui + This package contains the utilities of DTK5 Gui. Package: libdtkgui-dev Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkgui5( =${binary:Version}), libdtkcommon-dev(>=5.6.16) -Description: Deepin Tool Kit Gui Devel library - DtkGui is base devel library of Deepin Qt/C++ applications. +Depends: libdtkgui5( =${binary:Version}), + libdtkcommon-dev(>=5.6.16), libdtkcore-dev +Build-Profiles: +Description: Development ToolKit Gui Devel Library (DTK5 with Qt5) + DTK Gui is the base library of deepin Qt/C++ applications. . - This package contains the header files and static libraries of DtkGui + This package contains the header files and development library symbolic links of DTK5 Gui. Package: libdtkgui-doc -Build-Profiles: +Build-Profiles: Architecture: any Depends: ${misc:Depends} -Description: Deepin Tool Kit Gui (Document) - DtkGui is base devel library of Deepin Qt/C++ applications. +Description: Development ToolKit Gui (Document) + DTK Gui is the base library of deepin Qt/C++ applications. . This package contains the qt Document of DtkGui diff --git a/debian/libdtk6gui-bin.install b/debian/libdtk6gui-bin.install new file mode 100644 index 00000000..ff327b9c --- /dev/null +++ b/debian/libdtk6gui-bin.install @@ -0,0 +1 @@ +usr/libexec/dtk6/DGui/bin/* diff --git a/debian/libdtk6gui-dev.install b/debian/libdtk6gui-dev.install new file mode 100644 index 00000000..5c1c913f --- /dev/null +++ b/debian/libdtk6gui-dev.install @@ -0,0 +1,5 @@ +usr/lib/*/libdtk6gui.so +usr/include/dtk6/* +usr/lib/*/pkgconfig/dtk6gui.pc +usr/lib/*/cmake/Dtk6Gui/* +usr/lib/*/qt6/* diff --git a/debian/libdtk6gui-doc.install b/debian/libdtk6gui-doc.install new file mode 100644 index 00000000..95d59b3e --- /dev/null +++ b/debian/libdtk6gui-doc.install @@ -0,0 +1 @@ +usr/share/qt6/doc/dtkgui.qch diff --git a/debian/libdtk6gui.install b/debian/libdtk6gui.install new file mode 100644 index 00000000..6e52ee01 --- /dev/null +++ b/debian/libdtk6gui.install @@ -0,0 +1 @@ +usr/lib/*/libdtk6gui.so.6* diff --git a/debian/libdtkgui-dev.install b/debian/libdtkgui-dev.install index f1f7613e..2232d458 100644 --- a/debian/libdtkgui-dev.install +++ b/debian/libdtkgui-dev.install @@ -1,5 +1,5 @@ -usr/lib/*/lib*.so -usr/include -usr/lib/*/pkgconfig/*.pc -usr/lib/*/cmake/*/*.cmake +usr/lib/*/libdtkgui.so +usr/include/dtk5/* +usr/lib/*/pkgconfig/dtkgui.pc +usr/lib/*/cmake/DtkGui/* usr/lib/*/qt5/* diff --git a/debian/libdtkgui5-bin.install b/debian/libdtkgui5-bin.install index 03b0ff69..9651570b 100644 --- a/debian/libdtkgui5-bin.install +++ b/debian/libdtkgui5-bin.install @@ -1 +1 @@ -usr/*/*/DGui/bin/* +usr/libexec/dtk5/DGui/bin/* diff --git a/debian/libdtkgui5.install b/debian/libdtkgui5.install index 3394c41c..c4610cc2 100644 --- a/debian/libdtkgui5.install +++ b/debian/libdtkgui5.install @@ -1,2 +1 @@ -usr/lib/*/lib*.so.* -#usr/share/dsg/*/* +usr/lib/*/libdtkgui.so.5* diff --git a/debian/rules b/debian/rules index 7c307cde..588fe9f6 100755 --- a/debian/rules +++ b/debian/rules @@ -1,7 +1,6 @@ #!/usr/bin/make -f DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk -export QT_SELECT = qt5 # 安全编译参数 export DEB_BUILD_MAINT_OPTIONS = hardening=+all @@ -14,22 +13,77 @@ DEB_CMAKE_EXTRA_FLAGS += -DCMAKE_SKIP_BUILD_RPATH=ON DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) -VERSION = $(DEB_VERSION_UPSTREAM) -_PACK_VER = $(shell echo $(VERSION) | awk -F'[+_~-]' '{print $$1}') -_BUILD_VER = $(shell echo $(VERSION) | awk -F'[+_~-]' '{print $$2}' | sed 's/[^0-9]//g' | awk '{print int($$1)}') -ifeq ($(_BUILD_VER),) - CONFIG_VERSION = $(_PACK_VER) -else - CONFIG_VERSION = $(_PACK_VER).$(_BUILD_VER) -endif +# x.y.z -> DTK5_VERSION=5.y.z, DTK6_VERSION=6.y.z +DTK5_VERSION := $(shell echo $(DEB_VERSION_UPSTREAM) | sed -E 's/^[0-9]+(\.|[^0-9]|$$)/5\1/') +DTK6_VERSION := $(shell echo $(DEB_VERSION_UPSTREAM) | sed -E 's/^[0-9]+(\.|[^0-9]|$$)/6\1/') + +DTK5_MAJOR_MINOR := $(shell echo $(DTK5_VERSION) | cut -d '.' -f 1,2) +BUILD_DOCS := $(if $(filter nodoc,$(DEB_BUILD_PROFILES)),OFF,ON) +BUILD_DTK5 := $(if $(filter nodtk5,$(DEB_BUILD_PROFILES)),OFF,ON) +BUILD_DTK6 := $(if $(filter nodtk6,$(DEB_BUILD_PROFILES)),OFF,ON) %: dh $@ override_dh_auto_configure: - dh_auto_configure -- $(DEB_CMAKE_EXTRA_FLAGS) -DBUILD_TESTING=OFF -DBUILD_DOCS=ON -DDTK_VERSION=$(_PACK_VER) -#override_dh_auto_test: -# echo "skip auto test" +ifeq ($(BUILD_DTK5),ON) + mkdir -p build5 + QT_SELECT=qt5 dh_auto_configure --builddirectory=build5 -- \ + $(DEB_CMAKE_EXTRA_FLAGS) \ + -DBUILD_TESTING=OFF \ + -DBUILD_DOCS=$(BUILD_DOCS) \ + -DDTK5=ON +endif +ifeq ($(BUILD_DTK6),ON) + mkdir -p build6 + dh_auto_configure --builddirectory=build6 -- \ + $(DEB_CMAKE_EXTRA_FLAGS) \ + -DBUILD_TESTING=OFF \ + -DBUILD_DOCS=$(BUILD_DOCS) \ + -DDTK5=OFF +endif + +override_dh_auto_build: +ifeq ($(BUILD_DTK5),ON) + QT_SELECT=qt5 dh_auto_build --builddirectory=build5 +endif +ifeq ($(BUILD_DTK6),ON) + dh_auto_build --builddirectory=build6 +endif + +override_dh_auto_install: +ifeq ($(BUILD_DTK5),ON) + QT_SELECT=qt5 dh_auto_install --builddirectory=build5 +endif +ifeq ($(BUILD_DTK6),ON) + dh_auto_install --builddirectory=build6 +endif override_dh_makeshlibs: - dh_makeshlibs -V "libdtkgui5 (>= $(shell echo $(VERSION) | cut -d '.' -f 1,2))" +ifeq ($(BUILD_DTK5),ON) + dh_makeshlibs -V "libdtkgui5 (>= $(DTK5_MAJOR_MINOR))" -plibdtkgui5 +endif +ifeq ($(BUILD_DTK6),ON) + dh_makeshlibs -V "libdtk6gui (>= $(DTK6_VERSION))" -plibdtk6gui +endif + +override_dh_link: +ifeq ($(BUILD_DTK5),ON) + dh_link usr/lib/$(DEB_HOST_MULTIARCH)/libdtkgui.so.5 usr/lib/$(DEB_HOST_MULTIARCH)/libdtkgui.so -p libdtkgui-dev +endif +ifeq ($(BUILD_DTK6),ON) + dh_link usr/lib/$(DEB_HOST_MULTIARCH)/libdtk6gui.so.6 usr/lib/$(DEB_HOST_MULTIARCH)/libdtk6gui.so -p libdtk6gui-dev +endif + +override_dh_auto_test: +ifeq ($(BUILD_DTK5),ON) + QT_SELECT=qt5 dh_auto_test --builddirectory=build5 +endif +ifeq ($(BUILD_DTK6),ON) + dh_auto_test --builddirectory=build6 +endif + +override_dh_auto_clean: + dh_auto_clean --builddirectory=build5 + dh_auto_clean --builddirectory=build6 + rm -rf build5 build6 diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index d72eceae..7f558f61 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -8,7 +8,7 @@ set (DOXYGEN_GENERATE_HTML "YES" CACHE STRING "Doxygen HTML output") set (DOXYGEN_GENERATE_XML "YES" CACHE STRING "Doxygen XML output") set (DOXYGEN_GENERATE_QHP "YES" CACHE STRING "Doxygen QHP output") set (DOXYGEN_FILE_PATTERNS *.cpp *.h *.zh_CN.md *.zh_CN.dox CACHE STRING "Doxygen File Patterns") -set (DOXYGEN_PROJECT_NUMBER ${CMAKE_PROJECT_VERSION} CACHE STRING "") # Should be the same as this project is using. +set (DOXYGEN_PROJECT_NUMBER ${DTK_VERSION} CACHE STRING "") # Should be the same as this project is using. set (DOXYGEN_EXTRACT_STATIC YES) set (DOXYGEN_OUTPUT_LANGUAGE "Chinese" CACHE STRING "Doxygen Output Language") set (DOXYGEN_IMAGE_PATH ${CMAKE_CURRENT_LIST_DIR}/images/) diff --git a/dtkgui.cmake b/dtkgui.cmake index 6c9d426a..81a88e57 100644 --- a/dtkgui.cmake +++ b/dtkgui.cmake @@ -1,6 +1,6 @@ -message(STATUS "Current Qt Version: ${QT_VERSION_MAJOR}") +message(STATUS "Compiling with DTK major version: ${DTK_VERSION_MAJOR}, Qt major version: ${QT_VERSION_MAJOR}") -set(LIB_NAME dtk${DTK_VERSION_MAJOR}gui) +set(LIB_NAME dtk${DTK_NAME_SUFFIX}gui) # Set install path if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) @@ -30,11 +30,11 @@ else() set (BUILD_DOCS OFF CACHE BOOL "Generate doxygen-based documentation") endif() -set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/dtk${PROJECT_VERSION_MAJOR}/DGui") -set(TOOL_INSTALL_DIR "${CMAKE_INSTALL_LIBEXECDIR}/dtk${PROJECT_VERSION_MAJOR}/DGui/bin") +set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/dtk${DTK_VERSION_MAJOR}/DGui") +set(TOOL_INSTALL_DIR "${CMAKE_INSTALL_LIBEXECDIR}/dtk${DTK_VERSION_MAJOR}/DGui/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 module files") -set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Dtk${DTK_VERSION_MAJOR}Gui") +set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Dtk${DTK_NAME_SUFFIX}Gui") set(PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra -fopenmp") @@ -59,25 +59,25 @@ endforeach() # Generate cmake config file configure_package_config_file(misc/DtkGuiConfig.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}GuiConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}GuiConfig.cmake INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}" PATH_VARS TOOL_INSTALL_DIR ) # Generate cmake version file write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}GuiConfigVersion.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}GuiConfigVersion.cmake" VERSION ${DTK_VERSION} COMPATIBILITY SameMajorVersion ) # Install cmake config file and version file to CONFIG_INSTALL_DIR install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}GuiConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}GuiConfigVersion.cmake + ${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}GuiConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}GuiConfigVersion.cmake DESTINATION "${CONFIG_INSTALL_DIR}" ) # Install pkgconfig file -configure_file(misc/dtkgui.pc.in dtk${DTK_VERSION_MAJOR}gui.pc @ONLY) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dtk${DTK_VERSION_MAJOR}gui.pc DESTINATION "${PKGCONFIG_INSTALL_DIR}") +configure_file(misc/dtkgui.pc.in dtk${DTK_NAME_SUFFIX}gui.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dtk${DTK_NAME_SUFFIX}gui.pc DESTINATION "${PKGCONFIG_INSTALL_DIR}") # Install pri module configure_file(misc/qt_lib_dtkgui.pri.in qt_lib_dtkgui.pri @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_dtkgui.pri DESTINATION "${MKSPECS_INSTALL_DIR}") @@ -111,7 +111,7 @@ install(FILES DtkGuis DESTINATION "${INCLUDE_INSTALL_DIR}") # Find common dependencies find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui DBus Network) find_package(PkgConfig REQUIRED) -find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED Core) +find_package(Dtk${DTK_NAME_SUFFIX} REQUIRED Core) find_package(DtkBuildHelper REQUIRED) pkg_check_modules(librsvg REQUIRED IMPORTED_TARGET librsvg-2.0) diff --git a/examples/animation-dci/CMakeLists.txt b/examples/animation-dci/CMakeLists.txt index 5277e078..da2f1233 100644 --- a/examples/animation-dci/CMakeLists.txt +++ b/examples/animation-dci/CMakeLists.txt @@ -1,11 +1,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -find_package(Dtk${DTK_VERSION_MAJOR}Core REQUIRED) +find_package(Dtk${DTK_NAME_SUFFIX}Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) set(BIN_NAME animation-dci) -set(TARGET ${BIN_NAME}${DTK_VERSION_MAJOR}) - +set(TARGET ${BIN_NAME}${DTK_NAME_SUFFIX}) add_executable(${TARGET} main.cpp test_dci_icon.qrc @@ -14,6 +13,6 @@ add_executable(${TARGET} target_link_libraries( ${TARGET} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets - dtk${DTK_VERSION_MAJOR}gui + dtk${DTK_NAME_SUFFIX}gui ) -set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME ${BIN_NAME}) +set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME ${BIN_NAME}) diff --git a/misc/DtkGuiConfig.cmake.in b/misc/DtkGuiConfig.cmake.in index a18aef9f..cc071072 100644 --- a/misc/DtkGuiConfig.cmake.in +++ b/misc/DtkGuiConfig.cmake.in @@ -1,18 +1,18 @@ @PACKAGE_INIT@ include(CMakeFindDependencyMacro) -find_dependency(Dtk@DTK_VERSION_MAJOR@Core) +find_dependency(Dtk@DTK_NAME_SUFFIX@Core) find_dependency(Qt@QT_VERSION_MAJOR@Network) find_dependency(Qt@QT_VERSION_MAJOR@Gui) -include(${CMAKE_CURRENT_LIST_DIR}/Dtk@DTK_VERSION_MAJOR@GuiTargets.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/Dtk@DTK_NAME_SUFFIX@GuiTargets.cmake) -set(DtkGui_LIBRARIES Dtk@DTK_VERSION_MAJOR@::Gui) -get_target_property(DtkGui_INCLUDE_DIRS Dtk@DTK_VERSION_MAJOR@::Gui INTERFACE_INCLUDE_DIRECTORIES) -get_target_property(DtkGui_LIBRARY_DIRS Dtk@DTK_VERSION_MAJOR@::Gui INTERFACE_LINK_DIRECTORIES) +set(DtkGui_LIBRARIES Dtk@DTK_NAME_SUFFIX@::Gui) +get_target_property(DtkGui_INCLUDE_DIRS Dtk@DTK_NAME_SUFFIX@::Gui INTERFACE_INCLUDE_DIRECTORIES) +get_target_property(DtkGui_LIBRARY_DIRS Dtk@DTK_NAME_SUFFIX@::Gui INTERFACE_LINK_DIRECTORIES) set(DtkGui_TOOL_DIRS "@PACKAGE_TOOL_INSTALL_DIR@") -check_required_components(Dtk@DTK_VERSION_MAJOR@Gui) +check_required_components(Dtk@DTK_NAME_SUFFIX@Gui) # Keep deprecated variables for compatibility set(DTKGUI_INCLUDE_DIR ${DtkGui_INCLUDE_DIRS}) diff --git a/misc/dtkgui.pc.in b/misc/dtkgui.pc.in index 89fdbbf3..589b6f9b 100644 --- a/misc/dtkgui.pc.in +++ b/misc/dtkgui.pc.in @@ -4,9 +4,9 @@ libdir=${prefix}/@LIBRARY_INSTALL_DIR@ includedir=${prefix}/@INCLUDE_INSTALL_DIR@ tooldir=${prefix}/@PACKAGE_TOOL_INSTALL_DIR@ -Name: dtk@DTK_VERSION_MAJOR@gui -Description: Deepin Tool Kit dtkgui header files -Version: @PROJECT_VERSION@ -Libs: -L${libdir} -ldtk@DTK_VERSION_MAJOR@gui +Name: dtk@DTK_NAME_SUFFIX@gui +Description: Development ToolKit Gui Devel Library +Version: @DTK_VERSION@ +Libs: -L${libdir} -ldtk@DTK_NAME_SUFFIX@gui Cflags: -I${includedir} -Requires: dtk@DTK_VERSION_MAJOR@core +Requires: dtk@DTK_NAME_SUFFIX@core diff --git a/misc/qt_lib_dtkgui.pri.in b/misc/qt_lib_dtkgui.pri.in index 28308ee2..e78520bf 100644 --- a/misc/qt_lib_dtkgui.pri.in +++ b/misc/qt_lib_dtkgui.pri.in @@ -1,9 +1,9 @@ -QT.dtkgui.VERSION = @PROJECT_VERSION@ -QT.dtkgui.MAJOR_VERSION = @PROJECT_VERSION_MAJOR@ -QT.dtkgui.MINOR_VERSION = @PROJECT_VERSION_MINOR@ -QT.dtkgui.PATCH_VERSION = @PROJECT_VERSION_PATCH@ +QT.dtkgui.VERSION = @DTK_VERSION@ +QT.dtkgui.MAJOR_VERSION = @DTK_VERSION_MAJOR@ +QT.dtkgui.MINOR_VERSION = @DTK_VERSION_MINOR@ +QT.dtkgui.PATCH_VERSION = @DTK_VERSION_PATCH@ QT.dtkgui.name = dtkgui -QT.dtkgui.module = dtk@DTK_VERSION_MAJOR@gui +QT.dtkgui.module = dtk@DTK_NAME_SUFFIX@gui QT.dtkgui.tools = @CMAKE_INSTALL_PREFIX@/@TOOL_INSTALL_DIR@ QT.dtkgui.libs = @CMAKE_INSTALL_PREFIX@/@LIBRARY_INSTALL_DIR@ QT.dtkgui.includes = @CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_DIR@ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e663d1f8..45949c4f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -41,7 +41,7 @@ target_link_libraries(${LIB_NAME} PUBLIC Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Network - Dtk${DTK_VERSION_MAJOR}::Core + Dtk${DTK_NAME_SUFFIX}::Core PRIVATE Qt${QT_VERSION_MAJOR}::GuiPrivate Qt${QT_VERSION_MAJOR}::CorePrivate @@ -80,8 +80,8 @@ if(NOT DTK_DISABLE_LIBXDG) endif() set_target_properties(${LIB_NAME} PROPERTIES - VERSION ${CMAKE_PROJECT_VERSION} - SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} + VERSION ${DTK_VERSION} + SOVERSION ${DTK_VERSION_MAJOR} EXPORT_NAME Gui ) @@ -93,8 +93,8 @@ target_link_directories(${LIB_NAME} INTERFACE $ ) -install(TARGETS ${LIB_NAME} EXPORT Dtk${DTK_VERSION_MAJOR}GuiTargets DESTINATION "${LIBRARY_INSTALL_DIR}") -install(EXPORT Dtk${DTK_VERSION_MAJOR}GuiTargets NAMESPACE Dtk${DTK_VERSION_MAJOR}:: FILE Dtk${DTK_VERSION_MAJOR}GuiTargets.cmake DESTINATION "${CONFIG_INSTALL_DIR}") +install(TARGETS ${LIB_NAME} EXPORT Dtk${DTK_NAME_SUFFIX}GuiTargets DESTINATION "${LIBRARY_INSTALL_DIR}") +install(EXPORT Dtk${DTK_NAME_SUFFIX}GuiTargets NAMESPACE Dtk${DTK_NAME_SUFFIX}:: FILE Dtk${DTK_NAME_SUFFIX}GuiTargets.cmake DESTINATION "${CONFIG_INSTALL_DIR}") install(DIRECTORY ../include/util/ DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*") install(DIRECTORY ../include/DtkGui/ DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*") install(DIRECTORY ../include/global/ DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bbe6815c..9e4d982b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -32,8 +32,12 @@ add_executable(${BIN_NAME} add_dependencies(${BIN_NAME} ${test-plugin}) -target_compile_options(${BIN_NAME} PRIVATE -fno-access-control -fsanitize=address) -target_link_options(${BIN_NAME} PRIVATE -fsanitize=address) +target_compile_options(${BIN_NAME} PRIVATE -fno-access-control) + +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_options(${BIN_NAME} PRIVATE -fsanitize=address) + target_link_options(${BIN_NAME} PRIVATE -fsanitize=address) +endif() target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Gui @@ -42,7 +46,7 @@ target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::DBus Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Test - Dtk${DTK_VERSION_MAJOR}::Core + Dtk${DTK_NAME_SUFFIX}::Core PkgConfig::librsvg GTest::GTest ${LIB_NAME} diff --git a/tests/platform-plugin-test/CMakeLists.txt b/tests/platform-plugin-test/CMakeLists.txt index 2b3b7419..d29b1eb5 100644 --- a/tests/platform-plugin-test/CMakeLists.txt +++ b/tests/platform-plugin-test/CMakeLists.txt @@ -6,7 +6,7 @@ if("${QT_VERSION_MAJOR}" STRLESS "6") find_package(Qt${QT_VERSION_MAJOR} REQUIRED EventDispatcherSupport ServiceSupport) endif() -find_package(Dtk${DTK_VERSION_MAJOR}Core REQUIRED) +find_package(Dtk${DTK_NAME_SUFFIX}Core REQUIRED) file(GLOB plugin_SRC minimal.json @@ -21,7 +21,7 @@ target_link_libraries(${test-plugin} PRIVATE Qt${QT_VERSION_MAJOR}::CorePrivate Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::GuiPrivate - Dtk${DTK_VERSION_MAJOR}::Core) + Dtk${DTK_NAME_SUFFIX}::Core) if("${QT_VERSION_MAJOR}" STRLESS "6") target_link_libraries(${test-plugin} PRIVATE diff --git a/tools/dci-icon-theme/CMakeLists.txt b/tools/dci-icon-theme/CMakeLists.txt index 3b19fda2..a871e50d 100644 --- a/tools/dci-icon-theme/CMakeLists.txt +++ b/tools/dci-icon-theme/CMakeLists.txt @@ -1,5 +1,5 @@ set(BIN_NAME dci-icon-theme) -set(TARGET_NAME ${BIN_NAME}${DTK_VERSION_MAJOR}) +set(TARGET_NAME ${BIN_NAME}${DTK_NAME_SUFFIX}) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Concurrent REQUIRED) diff --git a/tools/dci-iconfinder/CMakeLists.txt b/tools/dci-iconfinder/CMakeLists.txt index 44f80a67..8aa2c9ad 100644 --- a/tools/dci-iconfinder/CMakeLists.txt +++ b/tools/dci-iconfinder/CMakeLists.txt @@ -1,5 +1,5 @@ set(BIN_NAME dci-iconfinder) -set(TARGET_NAME ${BIN_NAME}${DTK_VERSION_MAJOR}) +set(TARGET_NAME ${BIN_NAME}${DTK_NAME_SUFFIX}) add_executable(${TARGET_NAME} main.cpp diff --git a/tools/dci-image-converter/CMakeLists.txt b/tools/dci-image-converter/CMakeLists.txt index 2b881086..e8fa6eaa 100644 --- a/tools/dci-image-converter/CMakeLists.txt +++ b/tools/dci-image-converter/CMakeLists.txt @@ -1,5 +1,5 @@ set(BIN_NAME dci-image-converter) -set(TARGET_NAME ${BIN_NAME}${DTK_VERSION_MAJOR}) +set(TARGET_NAME ${BIN_NAME}${DTK_NAME_SUFFIX}) add_executable(${TARGET_NAME} main.cpp diff --git a/tools/dde-kwin-debug/CMakeLists.txt b/tools/dde-kwin-debug/CMakeLists.txt index c77615dc..e7447345 100644 --- a/tools/dde-kwin-debug/CMakeLists.txt +++ b/tools/dde-kwin-debug/CMakeLists.txt @@ -1,5 +1,5 @@ set(BIN_NAME dde-kwin-bug) -set(TARGET_NAME ${BIN_NAME}${DTK_VERSION_MAJOR}) +set(TARGET_NAME ${BIN_NAME}${DTK_NAME_SUFFIX}) pkg_check_modules(X11 IMPORTED_TARGET REQUIRED x11) diff --git a/tools/deepin-gui-settings/CMakeLists.txt b/tools/deepin-gui-settings/CMakeLists.txt index bc157ded..993dd4c1 100644 --- a/tools/deepin-gui-settings/CMakeLists.txt +++ b/tools/deepin-gui-settings/CMakeLists.txt @@ -1,5 +1,5 @@ set(BIN_NAME deepin-gui-settings) -set(TARGET_NAME ${BIN_NAME}${DTK_VERSION_MAJOR}) +set(TARGET_NAME ${BIN_NAME}${DTK_NAME_SUFFIX}) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) diff --git a/tools/image-handler/CMakeLists.txt b/tools/image-handler/CMakeLists.txt index 3b1f0fef..a2f3b0fb 100644 --- a/tools/image-handler/CMakeLists.txt +++ b/tools/image-handler/CMakeLists.txt @@ -1,5 +1,5 @@ set(BIN image-handler) -set(TARGET_NAME ${BIN}${DTK_VERSION_MAJOR}) +set(TARGET_NAME ${BIN}${DTK_NAME_SUFFIX}) add_executable(${TARGET_NAME} main.cpp