mirror of
https://github.com/linuxdeepin/gio-qt.git
synced 2025-01-12 23:36:32 +01:00
feat: add support for Qt6
use both Qt6 and Qt5 to compile, generate gio-qt6 for Qt6 Log: add support for Qt6
This commit is contained in:
parent
779ec19a9d
commit
3ef249a410
13 changed files with 183 additions and 62 deletions
67
.gitignore
vendored
67
.gitignore
vendored
|
@ -1,5 +1,64 @@
|
||||||
# User
|
# C++ objects and libs
|
||||||
*.user
|
*.slo
|
||||||
|
*.lo
|
||||||
|
*.o
|
||||||
|
*.a
|
||||||
|
*.la
|
||||||
|
*.lai
|
||||||
|
*.so
|
||||||
|
*.so.*
|
||||||
|
*.dll
|
||||||
|
*.dylib
|
||||||
|
|
||||||
# Build directory
|
# Qt-es
|
||||||
build/
|
object_script.*.Release
|
||||||
|
object_script.*.Debug
|
||||||
|
*_plugin_import.cpp
|
||||||
|
/.qmake.cache
|
||||||
|
/.qmake.stash
|
||||||
|
*.pro.user
|
||||||
|
*.pro.user.*
|
||||||
|
*.qbs.user
|
||||||
|
*.qbs.user.*
|
||||||
|
*.moc
|
||||||
|
moc_*.cpp
|
||||||
|
moc_*.h
|
||||||
|
qrc_*.cpp
|
||||||
|
ui_*.h
|
||||||
|
*.qmlc
|
||||||
|
*.jsc
|
||||||
|
Makefile*
|
||||||
|
*build-*
|
||||||
|
*.qm
|
||||||
|
*.prl
|
||||||
|
|
||||||
|
# Qt unit tests
|
||||||
|
target_wrapper.*
|
||||||
|
|
||||||
|
# QtCreator
|
||||||
|
*.autosave
|
||||||
|
|
||||||
|
# QtCreator Qml
|
||||||
|
*.qmlproject.user
|
||||||
|
*.qmlproject.user.*
|
||||||
|
|
||||||
|
# QtCreator CMake
|
||||||
|
CMakeLists.txt.user*
|
||||||
|
|
||||||
|
# QtCreator 4.8< compilation database
|
||||||
|
compile_commands.json
|
||||||
|
|
||||||
|
# QtCreator local machine specific files for imported projects
|
||||||
|
*creator.user*
|
||||||
|
|
||||||
|
*_qmlcache.qrc
|
||||||
|
|
||||||
|
# debian
|
||||||
|
debian/*debhelper*
|
||||||
|
debian/files
|
||||||
|
debian/libgio-qt/
|
||||||
|
debian/libgio-qt-dev/
|
||||||
|
debian/libgio-qt-doc/
|
||||||
|
debian/tmp/
|
||||||
|
debian/*.substvars
|
||||||
|
obj-*
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
project(gio-qt)
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.12.4)
|
cmake_minimum_required(VERSION 3.12.4)
|
||||||
|
|
||||||
|
project(gio-qt)
|
||||||
|
|
||||||
option(BUILD_TESTS "Build tests" OFF)
|
option(BUILD_TESTS "Build tests" OFF)
|
||||||
option(BUILD_UTILS "Build utilities" ON)
|
option(BUILD_UTILS "Build utilities" ON)
|
||||||
option(BUILD_DOCS "Build documentation" ON)
|
option(BUILD_DOCS "Build documentation" ON)
|
||||||
|
@ -29,17 +29,9 @@ endif ()
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# Find the QtWidgets library
|
add_subdirectory(gio-qt)
|
||||||
find_package(Qt5 ${QT_MINIMUM_VERSION} CONFIG REQUIRED Core)
|
|
||||||
find_package(PkgConfig REQUIRED)
|
|
||||||
find_package(Doxygen)
|
|
||||||
|
|
||||||
pkg_check_modules(GIOMM giomm-2.4) # look into FindPkgConfig.cmake
|
|
||||||
|
|
||||||
add_subdirectory (gio-qt)
|
|
||||||
|
|
||||||
if (BUILD_TESTS)
|
if (BUILD_TESTS)
|
||||||
find_package(Qt5 ${QT_MINIMUM_VERSION} CONFIG REQUIRED Test)
|
|
||||||
add_subdirectory(test)
|
add_subdirectory(test)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
@ -48,6 +40,7 @@ if (BUILD_UTILS)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (BUILD_DOCS)
|
if (BUILD_DOCS)
|
||||||
|
find_package(Doxygen)
|
||||||
if (NOT DOXYGEN_FOUND)
|
if (NOT DOXYGEN_FOUND)
|
||||||
message(FATAL_ERROR "Doxygen is required to build the documentation.")
|
message(FATAL_ERROR "Doxygen is required to build the documentation.")
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -70,7 +63,6 @@ if (BUILD_DOCS)
|
||||||
)
|
)
|
||||||
|
|
||||||
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/docs/gio-qt.qch DESTINATION share/qt5/doc)
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/docs/gio-qt.qch DESTINATION share/qt5/doc)
|
||||||
|
|
||||||
else ()
|
else ()
|
||||||
message (STATUS "")
|
message (STATUS "")
|
||||||
message (STATUS "To build docs, please use -DBUILD_DOCS=Yes")
|
message (STATUS "To build docs, please use -DBUILD_DOCS=Yes")
|
||||||
|
|
2
debian/compat
vendored
2
debian/compat
vendored
|
@ -1 +1 @@
|
||||||
9
|
11
|
||||||
|
|
15
debian/control
vendored
15
debian/control
vendored
|
@ -3,14 +3,15 @@ Section: libs
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: Gary Wang <wzc782970009@gmail.com>
|
Maintainer: Gary Wang <wzc782970009@gmail.com>
|
||||||
Build-Depends:
|
Build-Depends:
|
||||||
debhelper (>= 9),
|
debhelper (>= 11),
|
||||||
cmake,
|
cmake,
|
||||||
pkg-config,
|
pkg-config,
|
||||||
qtbase5-dev,
|
qtbase5-dev,
|
||||||
qt5-qmake,
|
qttools5-dev-tools,
|
||||||
|
qt6-base-dev,
|
||||||
|
qt6-tools-dev-tools,
|
||||||
libglibmm-2.4-dev,
|
libglibmm-2.4-dev,
|
||||||
doxygen,
|
doxygen
|
||||||
qttools5-dev-tools
|
|
||||||
Standards-Version: 3.9.8
|
Standards-Version: 3.9.8
|
||||||
Homepage: https://github.com/linuxdeepin/gio-qt
|
Homepage: https://github.com/linuxdeepin/gio-qt
|
||||||
|
|
||||||
|
@ -20,18 +21,18 @@ Conflicts: libgio-qt0
|
||||||
Replaces: libgio-qt0
|
Replaces: libgio-qt0
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libglibmm-2.4-1v5
|
Depends: ${shlibs:Depends}, ${misc:Depends}, libglibmm-2.4-1v5
|
||||||
Description: Gio wrapper for Qt.
|
Description: Gio wrapper for Qt.
|
||||||
A convenient way to bind gio with Qt5.
|
A convenient way to bind gio with either Qt5 or Qt6.
|
||||||
|
|
||||||
Package: libgio-qt-dev
|
Package: libgio-qt-dev
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Section: libdevel
|
Section: libdevel
|
||||||
Depends: libgio-qt, ${misc:Depends}, libglibmm-2.4-dev
|
Depends: libgio-qt, ${misc:Depends}, libglibmm-2.4-dev
|
||||||
Description: Development package for libgio-qt.
|
Description: Development package for libgio-qt.
|
||||||
A convenient way to bind gio with Qt5.
|
A convenient way to bind gio with either Qt5 or Qt6.
|
||||||
|
|
||||||
Package: libgio-qt-doc
|
Package: libgio-qt-doc
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Section: doc
|
Section: doc
|
||||||
Depends: ${misc:Depends}
|
Depends: ${misc:Depends}
|
||||||
Description: Gio wrapper for Qt (documentation)
|
Description: Gio wrapper for Qt (documentation)
|
||||||
A convenient way to bind gio with Qt5.
|
A convenient way to bind gio with either Qt5 or Qt6.
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
# Populate a CMake variable with the sources
|
# Populate a CMake variable with the sources
|
||||||
# TODO: portable headers?
|
# TODO: portable headers?
|
||||||
|
|
||||||
configure_file ("gio-qt.pc.in" "gio-qt.pc" @ONLY)
|
find_package(PkgConfig REQUIRED)
|
||||||
|
|
||||||
|
pkg_check_modules(GIOMM giomm-2.4) # look into FindPkgConfig.cmake
|
||||||
|
|
||||||
set (QGIO_PUBLIC_HEADER_FILES
|
set (QGIO_PUBLIC_HEADER_FILES
|
||||||
include/dglibutils.h
|
include/dglibutils.h
|
||||||
|
@ -34,40 +36,9 @@ set (QGIO_PRIVATE_CPP_FILES
|
||||||
private/dgiohelper.cpp
|
private/dgiohelper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
# Library
|
include(qt6.cmake)
|
||||||
add_library (gio-qt SHARED
|
include(qt5.cmake)
|
||||||
${QGIO_PUBLIC_HEADER_FILES}
|
|
||||||
${QGIO_PRIVATE_HEADER_FILES}
|
|
||||||
${QGIO_PRIVATE_CPP_FILES}
|
|
||||||
)
|
|
||||||
|
|
||||||
set_target_properties(
|
|
||||||
gio-qt PROPERTIES
|
|
||||||
VERSION ${PROJECT_VERSION}
|
|
||||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(gio-qt
|
|
||||||
PRIVATE
|
|
||||||
${GIOMM_INCLUDE_DIRS}
|
|
||||||
${CMAKE_CURRENT_LIST_DIR}/private
|
|
||||||
PUBLIC
|
|
||||||
${CMAKE_CURRENT_LIST_DIR}/include
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries (gio-qt Qt5::Core ${GIOMM_LIBRARIES})
|
|
||||||
|
|
||||||
target_compile_definitions(gio-qt PRIVATE
|
|
||||||
QT_NO_KEYWORDS
|
|
||||||
)
|
|
||||||
|
|
||||||
## dev files
|
|
||||||
install (FILES ${QGIO_PUBLIC_HEADER_FILES}
|
install (FILES ${QGIO_PUBLIC_HEADER_FILES}
|
||||||
DESTINATION include/gio-qt
|
DESTINATION include/gio-qt
|
||||||
)
|
)
|
||||||
|
|
||||||
install_targets ("/${CMAKE_INSTALL_LIBDIR}" gio-qt)
|
|
||||||
|
|
||||||
install (FILES "${CMAKE_CURRENT_BINARY_DIR}/gio-qt.pc"
|
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
|
|
||||||
)
|
|
||||||
|
|
12
gio-qt/gio-qt6.pc.in
Normal file
12
gio-qt/gio-qt6.pc.in
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||||
|
includedir=${prefix}/include
|
||||||
|
|
||||||
|
Name: gio-qt6
|
||||||
|
Description: Qt wrapper library for GIO.
|
||||||
|
Version: @PROJECT_VERSION@
|
||||||
|
Requires: glibmm-2.4, Qt6Core
|
||||||
|
|
||||||
|
Libs: -L${libdir} -lgio-qt6
|
||||||
|
Cflags: -I${includedir} -I${includedir}/gio-qt
|
|
@ -8,6 +8,8 @@
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QSharedData>
|
#include <QSharedData>
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
|
|
||||||
namespace Gio {
|
namespace Gio {
|
||||||
class File;
|
class File;
|
||||||
}
|
}
|
||||||
|
|
39
gio-qt/qt5.cmake
Normal file
39
gio-qt/qt5.cmake
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# Find the QtWidgets library
|
||||||
|
find_package(Qt5 ${QT_MINIMUM_VERSION} CONFIG REQUIRED Core)
|
||||||
|
|
||||||
|
# Library
|
||||||
|
add_library(${PROJECT_NAME}_qt5 SHARED
|
||||||
|
${QGIO_PUBLIC_HEADER_FILES}
|
||||||
|
${QGIO_PRIVATE_HEADER_FILES}
|
||||||
|
${QGIO_PRIVATE_CPP_FILES}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
${PROJECT_NAME}_qt5 PROPERTIES
|
||||||
|
OUTPUT_NAME gio-qt
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(${PROJECT_NAME}_qt5
|
||||||
|
PRIVATE
|
||||||
|
${GIOMM_INCLUDE_DIRS}
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/private
|
||||||
|
PUBLIC
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/include
|
||||||
|
Qt5::Core
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME}_qt5 Qt5::Core ${GIOMM_LIBRARIES})
|
||||||
|
|
||||||
|
target_compile_definitions(${PROJECT_NAME}_qt5 PRIVATE
|
||||||
|
QT_NO_KEYWORDS
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS ${PROJECT_NAME}_qt5 DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
|
## dev files
|
||||||
|
configure_file("gio-qt.pc.in" "gio-qt.pc" @ONLY)
|
||||||
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gio-qt.pc"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
|
||||||
|
)
|
39
gio-qt/qt6.cmake
Normal file
39
gio-qt/qt6.cmake
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# Find the QtWidgets library
|
||||||
|
find_package(Qt6 REQUIRED COMPONENTS Core)
|
||||||
|
|
||||||
|
# Library
|
||||||
|
add_library(${PROJECT_NAME}_qt6 SHARED
|
||||||
|
${QGIO_PUBLIC_HEADER_FILES}
|
||||||
|
${QGIO_PRIVATE_HEADER_FILES}
|
||||||
|
${QGIO_PRIVATE_CPP_FILES}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
${PROJECT_NAME}_qt6 PROPERTIES
|
||||||
|
OUTPUT_NAME gio-qt6
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(${PROJECT_NAME}_qt6
|
||||||
|
PRIVATE
|
||||||
|
${GIOMM_INCLUDE_DIRS}
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/private
|
||||||
|
PUBLIC
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/include
|
||||||
|
Qt6::Core
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME}_qt6 Qt6::Core ${GIOMM_LIBRARIES})
|
||||||
|
|
||||||
|
target_compile_definitions(${PROJECT_NAME}_qt6 PRIVATE
|
||||||
|
QT_NO_KEYWORDS
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS ${PROJECT_NAME}_qt6 DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
|
## dev files
|
||||||
|
configure_file("gio-qt6.pc.in" "gio-qt6.pc" @ONLY)
|
||||||
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gio-qt6.pc"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
|
||||||
|
)
|
|
@ -1,6 +1,4 @@
|
||||||
# QXdgDesktopEntryTest
|
# QXdgDesktopEntryTest
|
||||||
add_executable (qgio-tools
|
|
||||||
main.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries (qgio-tools gio-qt)
|
include(qt6.cmake)
|
||||||
|
include(qt5.cmake)
|
||||||
|
|
3
qgio-tools/qt5.cmake
Normal file
3
qgio-tools/qt5.cmake
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
add_executable (qgio-tools main.cpp)
|
||||||
|
|
||||||
|
target_link_libraries (qgio-tools gio-qt_qt5)
|
3
qgio-tools/qt6.cmake
Normal file
3
qgio-tools/qt6.cmake
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
add_executable(qgio-tools-qt6 main.cpp)
|
||||||
|
|
||||||
|
target_link_libraries(qgio-tools-qt6 gio-qt_qt6)
|
|
@ -1,3 +1,5 @@
|
||||||
|
find_package(Qt6 REQUIRED COMPONENTS Test)
|
||||||
|
|
||||||
enable_testing ()
|
enable_testing ()
|
||||||
|
|
||||||
function(DGIO_CREATE_TEST _generated_target_name _input_file_name _use_giomm)
|
function(DGIO_CREATE_TEST _generated_target_name _input_file_name _use_giomm)
|
||||||
|
|
Loading…
Reference in a new issue