Skip to content

Commit

Permalink
refactor: Supports both qt5 and qt6
Browse files Browse the repository at this point in the history
If it is a qt6 environment, then two sets of libraries that depend on qt5 and qt6 will be compiled

log: as title
  • Loading branch information
Johnson-zs committed Aug 2, 2024
1 parent 8725f33 commit c30bb86
Show file tree
Hide file tree
Showing 19 changed files with 287 additions and 226 deletions.
23 changes: 15 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,27 @@ SET(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall")

option(OPT_ENABLE_QT6 "Use Qt6" ON)
set(DFM_BUILD_WITH_QT6 FALSE)

include(GNUInstallDirs)

if(OPT_ENABLE_QT6)
find_package(QT NAMES Qt6 CONFIG REQUIRED Core)
set(DFM_VERSION_MAJOR 6)
else()
set(QT_MINIMUM_VERSION "5.6.3")
find_package(QT NAMES Qt5 ${QT_MINIMUM_VERSION} CONFIG REQUIRED Core)
set(DFM_VERSION_MAJOR "")
find_package(Qt6 QUIET)
if (Qt6_FOUND)
message(STATUS "Found Qt6: ${Qt6_VERSION}")
set(DFM_BUILD_WITH_QT6 TRUE)
set(QT_VERSION_MAJOR 6)
set(DFM_VERSION_MAJOR 6)
endif()
endif()

find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
message("Using Qt version: ${QT_VERSION}")
if(NOT DFM_BUILD_WITH_QT6)
message(WARNING "Qt6 not found, Use Qt5.")
set(QT_VERSION_MAJOR 5)
set(DFM_VERSION_MAJOR "")
endif()

# default

find_package(PkgConfig REQUIRED)

Expand Down
2 changes: 1 addition & 1 deletion misc/dfm-burn/dfm-burn.pc.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ Description: @CMAKE_PROJECT_DESCRIPTION@
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
Version: @PROJECT_VERSION@
Requires: libisoburn-1, Qt@QT_VERSION_MAJOR@Core
Cflags: -I"@CMAKE_INSTALL_FULL_INCLUDEDIR@/@BIN_NAME@"
Cflags: -I"@CMAKE_INSTALL_FULL_INCLUDEDIR@/dfm-burn"
Libs: -L"@CMAKE_INSTALL_FULL_LIBDIR@" -l@BIN_NAME@
Libs.private: -L"@CMAKE_INSTALL_FULL_LIBDIR@" -l@BIN_NAME@
2 changes: 1 addition & 1 deletion misc/dfm-burn/dfm-burnConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
set(@BIN_NAME@_INCLUDE_DIR @CMAKE_INSTALL_FULL_INCLUDEDIR@/@BIN_NAME@)
set(@BIN_NAME@_INCLUDE_DIR @CMAKE_INSTALL_FULL_INCLUDEDIR@/dfm-burn)
set(@BIN_NAME@_LIBRARIES @BIN_NAME@)
include_directories("${@BIN_NAME@_INCLUDE_DIR}")
2 changes: 1 addition & 1 deletion misc/dfm-io/dfm-io.pc.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ Name: @BIN_NAME@
Description: @CMAKE_PROJECT_DESCRIPTION@
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
Version: @PROJECT_VERSION@
Cflags: -I"@CMAKE_INSTALL_FULL_INCLUDEDIR@/@BIN_NAME@"
Cflags: -I"@CMAKE_INSTALL_FULL_INCLUDEDIR@/dfm-io"
Libs: -L"@CMAKE_INSTALL_FULL_LIBDIR@" -l@BIN_NAME@
Libs.private: -L"@CMAKE_INSTALL_FULL_LIBDIR@" -l@BIN_NAME@
2 changes: 1 addition & 1 deletion misc/dfm-io/dfm-ioConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
set(@BIN_NAME@_INCLUDE_DIR @CMAKE_INSTALL_FULL_INCLUDEDIR@/@BIN_NAME@)
set(@BIN_NAME@_INCLUDE_DIR @CMAKE_INSTALL_FULL_INCLUDEDIR@/dfm-io)
set(@BIN_NAME@_LIBRARIES @BIN_NAME@)
include_directories("${@BIN_NAME@_INCLUDE_DIR}")
2 changes: 1 addition & 1 deletion misc/dfm-mount/dfm-mount.pc.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ Description: @CMAKE_PROJECT_DESCRIPTION@
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
Version: @PROJECT_VERSION@
Requires: udisks2 gio-2.0 libsecret-1
Cflags: -I"@CMAKE_INSTALL_FULL_INCLUDEDIR@/@BIN_NAME@"
Cflags: -I"@CMAKE_INSTALL_FULL_INCLUDEDIR@/dfm-mount"
Libs: -L"@CMAKE_INSTALL_FULL_LIBDIR@" -l@BIN_NAME@
Libs.private: -L"@CMAKE_INSTALL_FULL_LIBDIR@" -l@BIN_NAME@
2 changes: 1 addition & 1 deletion misc/dfm-mount/dfm-mountConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
set(@BIN_NAME@_INCLUDE_DIR @CMAKE_INSTALL_FULL_INCLUDEDIR@/@BIN_NAME@)
set(@BIN_NAME@_INCLUDE_DIR @CMAKE_INSTALL_FULL_INCLUDEDIR@/dfm-mount)
set(@BIN_NAME@_LIBRARIES @BIN_NAME@)
include_directories("${@BIN_NAME@_INCLUDE_DIR}")
83 changes: 8 additions & 75 deletions src/dfm-burn/dfm-burn-lib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,22 +1,8 @@
cmake_minimum_required(VERSION 3.1.0)

set(BIN_NAME dfm${DFM_VERSION_MAJOR}-burn)
set (VERSION "1.0.0" CACHE STRING "define project version")
set(BASE_NAME dfm-burn)

# Version
if (NOT PROJECT_VERSION)
set(PROJECT_VERSION "1.0.0")
endif()

if (NOT PROJECT_VERSION_MAJOR)
set(PROJECT_VERSION_MAJOR 0)
endif()

# Setup the environment
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(isoburn REQUIRED libisoburn-1 IMPORTED_TARGET)

# public include
file(GLOB_RECURSE PUBLIC_INCLUDES CONFIGURE_DEPENDS
"${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/*")
Expand All @@ -33,70 +19,17 @@ FILE (GLOB_RECURSE SRCS CONFIGURE_DEPENDS
"./*.h"
)

# Build
add_library(${BIN_NAME} SHARED
${PUBLIC_INCLUDES}
${SRCS}
${UDFCLIENT_SRCS}
)

include(dfm-burn-qt5.cmake)

target_link_libraries(${BIN_NAME}
Qt${QT_VERSION_MAJOR}::Core
PkgConfig::isoburn
)

target_include_directories(
${BIN_NAME}
PUBLIC
${PROJECT_SOURCE_DIR}/include/${BASE_NAME}
${CMAKE_CURRENT_SOURCE_DIR}/..
)

# for udfclient
target_compile_definitions(${BIN_NAME} PRIVATE
NEEDS_ISPRINT
_DEFAULT_SOURCE
_BSD_SOURCE
_XOPEN_SOURCE=500
__USE_BSD
_FILE_OFFSET_BITS=64
NO_INT_FMTIO
NO_STRLCPY
st_atimespec=st_atim
st_ctimespec=st_ctim
st_mtimespec=st_mtim
NO_STAT_BIRTHTIME
NO_DIRENT_NAMLEN
SCSI
USCSI_LINUX_SCSI
)

set_target_properties(
${BIN_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
)
# Qt6
if (DFM_BUILD_WITH_QT6)
include(dfm-burn-qt6.cmake)
endif()

# Install
# install header
install(DIRECTORY
${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/${BASE_NAME}
DESTINATION include/${BIN_NAME}
DESTINATION include/${BASE_NAME}
FILES_MATCHING PATTERN "*.h"
)
install(TARGETS ${BIN_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

# for pc file config
set(PC_LIBS_PRIVATE Qt${QT_VERSION_MAJOR}Core)
set(PC_REQ_PRIVATE)
set(PC_REQ_PUBLIC)

# config pkgconfig file
configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}.pc.in ${BIN_NAME}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

# config cmake file
configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME})


6 changes: 6 additions & 0 deletions src/dfm-burn/dfm-burn-lib/dfm-burn-qt5.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
set(BIN_NAME dfm-burn)

set(QT_VERSION_MAJOR 5)
set(DFM_VERSION_MAJOR "")

include(dfm-burn.cmake)
6 changes: 6 additions & 0 deletions src/dfm-burn/dfm-burn-lib/dfm-burn-qt6.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
set(BIN_NAME dfm6-burn)

set(QT_VERSION_MAJOR 6)
set(DFM_VERSION_MAJOR 6)

include(dfm-burn.cmake)
73 changes: 73 additions & 0 deletions src/dfm-burn/dfm-burn-lib/dfm-burn.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Setup the environment
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(isoburn REQUIRED libisoburn-1 IMPORTED_TARGET)

# Build
add_library(${BIN_NAME} SHARED
${PUBLIC_INCLUDES}
${SRCS}
${UDFCLIENT_SRCS}
)

target_link_libraries(${BIN_NAME}
Qt${QT_VERSION_MAJOR}::Core
PkgConfig::isoburn
)

target_include_directories(
${BIN_NAME}
PUBLIC
${PROJECT_SOURCE_DIR}/include/${BASE_NAME}
${CMAKE_CURRENT_SOURCE_DIR}/..
)

if (NOT VERSION)
set(VERSION "1.0.0")
endif()

if (NOT PROJECT_VERSION_MAJOR)
set(PROJECT_VERSION_MAJOR 1)
endif()

set_target_properties(
${BIN_NAME} PROPERTIES
VERSION ${VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
)

# for udfclient
target_compile_definitions(${BIN_NAME} PRIVATE
NEEDS_ISPRINT
_DEFAULT_SOURCE
_BSD_SOURCE
_XOPEN_SOURCE=500
__USE_BSD
_FILE_OFFSET_BITS=64
NO_INT_FMTIO
NO_STRLCPY
st_atimespec=st_atim
st_ctimespec=st_ctim
st_mtimespec=st_mtim
NO_STAT_BIRTHTIME
NO_DIRENT_NAMLEN
SCSI
USCSI_LINUX_SCSI
)

# Install
install(TARGETS ${BIN_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

# for pc file config
set(PC_LIBS_PRIVATE Qt${QT_VERSION_MAJOR}Core)
set(PC_REQ_PRIVATE)
set(PC_REQ_PUBLIC)

# config pkgconfig file
configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}.pc.in ${BIN_NAME}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

# config cmake file
configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME})

65 changes: 7 additions & 58 deletions src/dfm-io/dfm-io/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,26 +1,8 @@
cmake_minimum_required(VERSION 3.1.0)

set(BIN_NAME dfm${DFM_VERSION_MAJOR}-io)
set (VERSION "1.0.0" CACHE STRING "define project version")
set(BASE_NAME dfm-io)

# Version
if (NOT PROJECT_VERSION)
set(PROJECT_VERSION "1.0.0")
endif()

if (NOT PROJECT_VERSION_MAJOR)
set(PROJECT_VERSION_MAJOR 0)
endif()

# Setup the environment
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Concurrent REQUIRED)
find_package(PkgConfig REQUIRED)

pkg_check_modules(GLIB glib-2.0 gobject-2.0 gio-2.0)
pkg_check_modules(mediainfoVal REQUIRED libmediainfo IMPORTED_TARGET)
list(APPEND mediainfos ${mediainfoVal_LDFLAGS})

# gio signals conflicts with qt signals
add_definitions(-DQT_NO_KEYWORDS)

Expand All @@ -34,50 +16,17 @@ FILE (GLOB_RECURSE IO_SRCS CONFIGURE_DEPENDS
"./*.h"
)

# Build
add_library(${BIN_NAME} SHARED
${IO_PUBLIC_INCLUDES}
${IO_SRCS}
)

set_target_properties(
${BIN_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
)

target_link_libraries(${BIN_NAME}
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Concurrent
PkgConfig::mediainfoVal
${mediainfos}
${GLIB_LIBRARIES}
)
include(dfm-io-qt5.cmake)

target_include_directories(${BIN_NAME}
PUBLIC
${GLIB_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}/include/${BASE_NAME}
)
# Qt6
if (DFM_BUILD_WITH_QT6)
include(dfm-io-qt6.cmake)
endif()

include(GNUInstallDirs)
# install headers
install(DIRECTORY
${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/${BASE_NAME}
DESTINATION include/${BIN_NAME}
FILES_MATCHING PATTERN "*.h"
)
install(TARGETS ${BIN_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

# for pc file config
set(PC_LIBS_PRIVATE Qt${QT_VERSION_MAJOR}Core)
set(PC_REQ_PRIVATE)
set(PC_REQ_PUBLIC)

# config pkgconfig file
configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}.pc.in ${BIN_NAME}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

# config cmake file
configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME})

6 changes: 6 additions & 0 deletions src/dfm-io/dfm-io/dfm-io-qt5.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
set(BIN_NAME dfm-io)

set(QT_VERSION_MAJOR 5)
set(DFM_VERSION_MAJOR "")

include(dfm-io.cmake)
6 changes: 6 additions & 0 deletions src/dfm-io/dfm-io/dfm-io-qt6.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
set(BIN_NAME dfm6-io)

set(QT_VERSION_MAJOR 6)
set(DFM_VERSION_MAJOR 6)

include(dfm-io.cmake)
Loading

0 comments on commit c30bb86

Please sign in to comment.