diff --git a/CMakeLists.txt b/CMakeLists.txt index 0548eaae9..4a2ab09b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,10 @@ cmake_minimum_required(VERSION 3.13) -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(DtkWidget - VERSION ${DTK_VERSION} + VERSION ${FILE_VERSION} DESCRIPTION "DTK Widget module" HOMEPAGE_URL "https://github.com/linuxdeepin/dtkwidget" LANGUAGES CXX C @@ -19,13 +18,18 @@ endif() include(GNUInstallDirs) include(CMakePackageConfigHelpers) -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) +option(DTK5 "Build DTK5." ON) +if(DTK5) + set(DTK_VERSION_MAJOR "5") + set(DTK_NAME_SUFFIX "") else() - message(SEND_ERROR "not support Prject Version ${PROJECT_VERSION}.") + set(DTK_VERSION_MAJOR "6") + set(DTK_NAME_SUFFIX "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(dtkwidget.cmake) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index d6f921e46..ef3aeb9b3 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -6,7 +6,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/dtkwidget.cmake b/dtkwidget.cmake index 0fb0c6438..40bee3cb2 100644 --- a/dtkwidget.cmake +++ b/dtkwidget.cmake @@ -1,5 +1,5 @@ -set(LIBNAME dtk${DTK_VERSION_MAJOR}widget) -set(DtkWidget Dtk${DTK_VERSION_MAJOR}Widget) +set(LIB_NAME dtk${DTK_NAME_SUFFIX}widget) +set(DtkWidget Dtk${DTK_NAME_SUFFIX}Widget) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -16,10 +16,10 @@ 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" + "${CMAKE_INSTALL_INCLUDEDIR}/dtk${DTK_VERSION_MAJOR}/DWidget" ) set(TOOL_INSTALL_DIR - "${CMAKE_INSTALL_LIBDIR}/dtk${PROJECT_VERSION_MAJOR}/DWidget/bin" + "${CMAKE_INSTALL_LIBEXECDIR}/dtk${DTK_VERSION_MAJOR}/DWidget/bin" ) set(LIBRARY_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" @@ -37,7 +37,7 @@ set(PKGCONFIG_INSTALL_DIR CACHE STRING "Install directory for pkgconfig files" ) -find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui) +find_package(Dtk${DTK_NAME_SUFFIX} REQUIRED COMPONENTS Core Gui) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network Concurrent @@ -143,8 +143,8 @@ write_basic_package_version_file( 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/DtkWidget.pc.in ${LIB_NAME}.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}.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 c192b806c..260f79dd5 100644 --- a/examples/PrintPreviewSettingsPlugin/CMakeLists.txt +++ b/examples/PrintPreviewSettingsPlugin/CMakeLists.txt @@ -8,5 +8,5 @@ add_library(${PLUGIN_NAME} SHARED ) target_link_libraries(${PLUGIN_NAME} PRIVATE - ${LIBNAME} + ${LIB_NAME} ) diff --git a/examples/collections/CMakeLists.txt b/examples/collections/CMakeLists.txt index 5b3776622..44db9d345 100644 --- a/examples/collections/CMakeLists.txt +++ b/examples/collections/CMakeLists.txt @@ -53,9 +53,9 @@ target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::GuiPrivate - ${LIBNAME} + ${LIB_NAME} ) install( TARGETS ${BIN_NAME} - DESTINATION "${CMAKE_INSTALL_LIBDIR}/dtk${PROJECT_VERSION_MAJOR}/DWidget/examples/" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/dtk${DTK_VERSION_MAJOR}/DWidget/examples/" ) diff --git a/misc/DtkWidget.pc.in b/misc/DtkWidget.pc.in index 3c6106691..77220837d 100644 --- a/misc/DtkWidget.pc.in +++ b/misc/DtkWidget.pc.in @@ -3,9 +3,9 @@ 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 +Name: Dtk@DTK_NAME_SUFFIX@Widget +Description: Deepin Tool Kit Widget library +Version: @DTK_VERSION@ +Libs: -L${libdir} -ldtk@DTK_NAME_SUFFIX@widget +Cflags: -I${includedir}/dtk@DTK_VERSION_MAJOR@/DWidget +Requires: dtk@DTK_NAME_SUFFIX@core dtk@DTK_NAME_SUFFIX@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 20cf3e97d..ef022cebd 100644 --- a/misc/DtkWidgetConfig.cmake.in +++ b/misc/DtkWidgetConfig.cmake.in @@ -1,17 +1,17 @@ @PACKAGE_INIT@ include(CMakeFindDependencyMacro) -find_dependency(Dtk@DTK_VERSION_MAJOR@Core) -find_dependency(Dtk@DTK_VERSION_MAJOR@Gui) +find_dependency(Dtk@DTK_NAME_SUFFIX@Core) +find_dependency(Dtk@DTK_NAME_SUFFIX@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}/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) +include(${CMAKE_CURRENT_LIST_DIR}/Dtk@DTK_NAME_SUFFIX@WidgetTargets.cmake) +set(DtkWidget_LIBRARIES Dtk@DTK_NAME_SUFFIX@::Widget) +get_target_property(DtkWidget_INCLUDE_DIRS Dtk@DTK_NAME_SUFFIX@::Widget INTERFACE_INCLUDE_DIRECTORIES) +get_target_property(DtkWidget_LIBRARY_DIRS Dtk@DTK_NAME_SUFFIX@::Widget INTERFACE_LINK_DIRECTORIES) set(DtkWidget_TOOL_DIRS "@PACKAGE_TOOL_INSTALL_DIR@") check_required_components(DtkWidget) diff --git a/misc/qt_lib_DtkWidget.pri.in b/misc/qt_lib_DtkWidget.pri.in index 623878d30..d593dcd51 100644 --- a/misc/qt_lib_DtkWidget.pri.in +++ b/misc/qt_lib_DtkWidget.pri.in @@ -1,9 +1,9 @@ -QT.dtkwidget.VERSION = @PROJECT_VERSION@ -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 = dtk@DTK_VERSION_MAJOR@widget +QT.dtkwidget.VERSION = @DTK_VERSION@ +QT.dtkwidget.MAJOR_VERSION = @DTK_VERSION_MAJOR@ +QT.dtkwidget.MINOR_VERSION = @DTK_VERSION_MINOR@ +QT.dtkwidget.PATCH_VERSION = @DTK_VERSION_PATCH@ +QT.dtkwidget.name = dtk@DTK_NAME_SUFFIX@widget +QT.dtkwidget.module = dtk@DTK_NAME_SUFFIX@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 f7441752f..1eb0d3f63 100644 --- a/plugin/dtkuidemo/CMakeLists.txt +++ b/plugin/dtkuidemo/CMakeLists.txt @@ -18,5 +18,5 @@ target_link_libraries(${DEMO} PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::GuiPrivate - ${LIBNAME} + ${LIB_NAME} ) diff --git a/plugin/dtkuiplugin/CMakeLists.txt b/plugin/dtkuiplugin/CMakeLists.txt index 528448faa..ede0ee075 100644 --- a/plugin/dtkuiplugin/CMakeLists.txt +++ b/plugin/dtkuiplugin/CMakeLists.txt @@ -3,7 +3,7 @@ project(${UIPLUGIN} VERSION 1.0.0 LANGUAGES CXX) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS UiPlugin Gui) -set(LIB_DWIDGET ${LIBNAME}) +set(LIB_DWIDGET ${LIB_NAME}) if (CMAKE_PROJECT_NAME STREQUAL ${UIPLUGIN}) message(STATUS "compile ${UIPLUGIN} individually") @@ -16,8 +16,8 @@ if (CMAKE_PROJECT_NAME STREQUAL ${UIPLUGIN}) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX /usr) endif() - find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENT Widget) - set(LIB_DWIDGET Dtk${DTK_VERSION_MAJOR}::Widget) + find_package(Dtk${DTK_NAME_SUFFIX} REQUIRED COMPONENT Widget) + set(LIB_DWIDGET Dtk${DTK_NAME_SUFFIX}::Widget) endif() add_library( diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0cefbe073..e8e854289 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,14 +12,14 @@ include(widgets/widgets.cmake) file(GLOB TS_FILES translations/*.ts) -add_library(${LIBNAME} SHARED +add_library(${LIB_NAME} SHARED ${WIDGETS} ${UTIL} ${PUBLIC_HEADERS} ) if(QT_VERSION_MAJOR EQUAL 6) - qt_add_translations(${LIBNAME} + qt_add_translations(${LIB_NAME} TS_FILES ${TS_FILES} QM_FILES_OUTPUT_VARIABLE QM_FILES LUPDATE_OPTIONS -no-ui-lines -locations none @@ -27,14 +27,14 @@ if(QT_VERSION_MAJOR EQUAL 6) else() qt5_add_translation(QM_FILES ${TS_FILES}) add_custom_target(translations ALL DEPENDS ${QM_FILES}) - target_sources(${LIBNAME} PRIVATE ${QM_FILES}) + target_sources(${LIB_NAME} PRIVATE ${QM_FILES}) endif() set(TRANSLATIONS_INSTALL_DIR - "dtk${PROJECT_VERSION_MAJOR}/DWidget/translations" + "dtk${DTK_VERSION_MAJOR}/DWidget/translations" ) -target_compile_definitions(${LIBNAME} PRIVATE +target_compile_definitions(${LIB_NAME} PRIVATE SN_API_NOT_YET_FROZEN DTK_NO_MULTIMEDIA DWIDGET_TRANSLATIONS_DIR="${TRANSLATIONS_INSTALL_DIR}" @@ -43,12 +43,12 @@ target_compile_definitions(${LIBNAME} PRIVATE ) if(DTK_STATIC_TRANSLATION) -target_compile_definitions(${LIBNAME} PRIVATE +target_compile_definitions(${LIB_NAME} PRIVATE DTK_STATIC_TRANSLATION ) endif() -target_include_directories(${LIBNAME} +target_include_directories(${LIB_NAME} PUBLIC $ $ @@ -60,15 +60,15 @@ INTERFACE $ ) -target_link_libraries(${LIBNAME} +target_link_libraries(${LIB_NAME} PUBLIC 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 + Dtk${DTK_NAME_SUFFIX}::Gui + Dtk${DTK_NAME_SUFFIX}::Core PRIVATE Qt${QT_VERSION_MAJOR}::Concurrent Qt${QT_VERSION_MAJOR}::GuiPrivate @@ -82,26 +82,26 @@ PRIVATE ) if("${QT_VERSION_MAJOR}" STREQUAL "5") - target_link_libraries(${LIBNAME} PRIVATE + target_link_libraries(${LIB_NAME} PRIVATE PkgConfig::QGSettings Qt5::X11Extras ) endif() -target_link_directories(${LIBNAME} INTERFACE +target_link_directories(${LIB_NAME} INTERFACE $ $ ) -set_target_properties(${LIBNAME} +set_target_properties(${LIB_NAME} PROPERTIES - VERSION ${CMAKE_PROJECT_VERSION} - SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} + VERSION ${DTK_VERSION} + SOVERSION ${DTK_VERSION_MAJOR} EXPORT_NAME Widget PUBLIC_HEADER "${PUBLIC_HEADERS}" ) install( - TARGETS ${LIBNAME} + TARGETS ${LIB_NAME} EXPORT ${DtkWidget}Targets DESTINATION ${LIBRARY_INSTALL_DIR} PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR} @@ -109,7 +109,7 @@ install( install( EXPORT ${DtkWidget}Targets - NAMESPACE Dtk${DTK_VERSION_MAJOR}:: + NAMESPACE Dtk${DTK_NAME_SUFFIX}:: FILE ${DtkWidget}Targets.cmake DESTINATION "${CONFIG_CMAKE_INSTALL_DIR}" ) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6a5efd32b..7c3c9e462 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -set(BINNAME "ut-${LIBNAME}") +set(BINNAME "ut-${LIB_NAME}") find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test) find_package(GTest REQUIRED) @@ -143,8 +143,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") target_compile_options(${BINNAME} PRIVATE -fprofile-arcs -ftest-coverage) endif() -target_compile_options(${BINNAME} PRIVATE -fno-access-control -fsanitize=address) -target_link_options(${BINNAME} PRIVATE -fsanitize=address) +target_compile_options(${BINNAME} PRIVATE -fno-access-control) +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_options(${BINNAME} PRIVATE -fsanitize=address) + target_link_options(${BINNAME} PRIVATE -fsanitize=address) +endif() target_include_directories(${BINNAME} PRIVATE ${PROJECT_SOURCE_DIR}/src/widgets @@ -173,8 +176,8 @@ target_link_libraries(${BINNAME} PRIVATE PkgConfig::Xi PkgConfig::X11 PkgConfig::XcbUtil - Dtk${DTK_VERSION_MAJOR}::Gui - Dtk${DTK_VERSION_MAJOR}::Core + Dtk${DTK_NAME_SUFFIX}::Gui + Dtk${DTK_NAME_SUFFIX}::Core GTest::GTest gmock pthread diff --git a/tools/svgc/CMakeLists.txt b/tools/svgc/CMakeLists.txt index 885eb8561..a41014d12 100644 --- a/tools/svgc/CMakeLists.txt +++ b/tools/svgc/CMakeLists.txt @@ -1,7 +1,7 @@ -set(TARGET_NAME dtk-svgc) -set(BIN_NAME ${TARGET_NAME}${DTK_VERSION_MAJOR}) +set(TARGET_NAME dtk${DTK_NAME_SUFFIX}-svgc) +set(BIN_NAME ${TARGET_NAME}) -find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Gui) +find_package(Dtk${DTK_NAME_SUFFIX} REQUIRED COMPONENTS Gui) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Svg) add_executable( @@ -12,7 +12,7 @@ add_executable( target_link_libraries( ${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Svg - Dtk${DTK_VERSION_MAJOR}::Gui + Dtk${DTK_NAME_SUFFIX}::Gui ) install(TARGETS ${BIN_NAME} DESTINATION "${TOOL_INSTALL_DIR}")