update dependency

This commit is contained in:
Kevin Yue 2021-09-13 23:58:51 +08:00
parent 0eb9cce8bb
commit 14b2f809b8
4 changed files with 84 additions and 30 deletions

View File

@ -9,33 +9,16 @@ set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication")
find_package(Qt5 REQUIRED COMPONENTS
Core
Widgets
Network
WebSockets
WebEngine
WebEngineWidgets
DBus
)
include(cmake/Add3rdParty.cmake)
add_3rdparty(
NAME SingleApplication
GITHUB_REPOSITORY itay-grudev/SingleApplication
VERSION 3.3.0
EXCLUDE_FROM_ALL
)
add_3rdparty(
NAME plog
GITHUB_REPOSITORY SergiusTheBest/plog
GIT_TAG 1.1.5
EXCLUDE_FROM_ALL
)
add_subdirectory(GPService)
add_subdirectory(GPClient)

View File

@ -1,6 +1,9 @@
include("${CMAKE_SOURCE_DIR}/cmake/Add3rdParty.cmake")
project(GPClient)
set(gpclient_GENERATED_SOURCES)
# set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication")
qt5_add_dbus_interface(gpclient_GENERATED_SOURCES ${CMAKE_BINARY_DIR}/com.yuezk.qt.GPService.xml gpserviceinterface)
@ -28,18 +31,52 @@ add_executable(gpclient
${gpclient_GENERATED_SOURCES}
)
target_include_directories(gpclient PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
add_3rdparty(
SingleApplication
GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git
GIT_TAG v3.3.0
EXCLUDE_FROM_ALL
CMAKE_ARGS -DQAPPLICATION_CLASS=QApplication
)
add_3rdparty(
plog
GIT_REPOSITORY https://github.com/SergiusTheBest/plog.git
GIT_TAG 1.1.5
EXCLUDE_FROM_ALL
CMAKE_ARGS -DPLOG_BUILD_SAMPLES=OFF
)
ExternalProject_Get_Property(SingleApplication-${PROJECT_NAME} SOURCE_DIR)
set(SingleApplication_INCLUDE_DIR ${SOURCE_DIR})
ExternalProject_Get_Property(SingleApplication-${PROJECT_NAME} BINARY_DIR)
set(SingleApplication_LIBRARY ${BINARY_DIR}/libSingleApplication.a)
ExternalProject_Get_Property(plog-${PROJECT_NAME} SOURCE_DIR)
set(plog_INCLUDE_DIR "${SOURCE_DIR}/include")
add_dependencies(gpservice SingleApplication-${PROJECT_NAME} plog-${PROJECT_NAME})
target_include_directories(gpclient PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${SingleApplication_INCLUDE_DIR}
${plog_INCLUDE_DIR}
)
target_link_libraries(gpclient
plog
SingleApplication
${SingleApplication_LIBRARY}
Qt5::Widgets
Qt5::Network
Qt5::WebSockets
Qt5::WebEngine
Qt5::WebEngineWidgets
Qt5::DBus
)
target_compile_definitions(gpclient PUBLIC QAPPLICATION_CLASS=QApplication)
install(TARGETS gpclient DESTINATION "/usr/bin")
install(FILES com.yuezk.qt.gpclient.desktop DESTINATION "/usr/share/applications")
install(FILES com.yuezk.qt.GPClient.svg DESTINATION "/usr/share/pixmaps")

View File

@ -1,3 +1,5 @@
include("${CMAKE_SOURCE_DIR}/cmake/Add3rdParty.cmake")
project(GPService)
set(gpservice_GENERATED_SOURCES)
@ -20,14 +22,37 @@ add_executable(gpservice
${gpservice_GENERATED_SOURCES}
)
target_include_directories(gpservice PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
add_3rdparty(
SingleApplication
GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git
GIT_TAG v3.3.0
EXCLUDE_FROM_ALL
CMAKE_ARGS -DQAPPLICATION_CLASS=QCoreApplication
)
ExternalProject_Get_Property(SingleApplication-${PROJECT_NAME} SOURCE_DIR)
ExternalProject_Get_Property(SingleApplication-${PROJECT_NAME} BINARY_DIR)
set(SingleApplication_INCLUDE_DIR ${SOURCE_DIR})
set(SingleApplication_LIBRARY ${BINARY_DIR}/libSingleApplication.a)
add_dependencies(gpservice SingleApplication-${PROJECT_NAME})
target_include_directories(gpservice PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${SingleApplication_INCLUDE_DIR}
)
target_link_libraries(gpservice
SingleApplication
${SingleApplication_LIBRARY}
Qt5::Core
Qt5::Network
Qt5::DBus
)
target_compile_definitions(gpservice PUBLIC QAPPLICATION_CLASS=QCoreApplication)
install(TARGETS gpservice DESTINATION "/usr/bin")
install(FILES "dbus/com.yuezk.qt.GPService.conf" DESTINATION "/usr/share/dbus-1/system.d" )
install(FILES "dbus/com.yuezk.qt.GPService.service" DESTINATION "/usr/share/dbus-1/system-services")

View File

@ -1,8 +1,8 @@
include(cmake/CPM.cmake)
include(ExternalProject)
function(add_3rdparty)
cmake_parse_arguments(add_3rdparty_args "EXCLUDE_FROM_ALL" "NAME" "" ${ARGN})
set(NAME ${add_3rdparty_args_NAME})
function(add_3rdparty NAME)
set(oneValueArgs GIT_REPOSITORY GIT_TAG)
cmake_parse_arguments(add_3rdparty_args "EXCLUDE_FROM_ALL" "${oneValueArgs}" "" ${ARGN})
if(EXISTS "${CMAKE_SOURCE_DIR}/3rdparty/${NAME}/CMakeLists.txt")
message(STATUS "Found third party locally for ${NAME}")
@ -13,12 +13,21 @@ function(add_3rdparty)
set(addSubdirectoryExtraArgs "")
endif()
add_subdirectory(
"${CMAKE_SOURCE_DIR}/3rdparty/${NAME}"
ExternalProject_Add(
${NAME}-${PROJECT_NAME}
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${NAME}
SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/${NAME}"
INSTALL_COMMAND ""
${addSubdirectoryExtraArgs}
"${add_3rdparty_args_UNPARSED_ARGUMENTS}"
)
return()
endif()
message(STATUS "Using CPM to download ${NAME}")
CPMAddPackage(${ARGN})
ExternalProject_Add(
${NAME}-${PROJECT_NAME}
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${NAME}
"${ARGN}"
)
endfunction()