1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-01-23 21:14:33 +00:00

Merge pull request #5132 from evsh/cmake

cmake: fix resources initialization and simplify QtSingleApplication linkage
This commit is contained in:
sledgehammer999 2016-04-17 10:28:59 -05:00
commit 2c459e8f74
8 changed files with 60 additions and 22 deletions

View File

@ -79,3 +79,15 @@ ELSE (QTSINGLEAPPLICATION_FOUND)
ENDIF (QTSINGLEAPPLICATION_FOUND) ENDIF (QTSINGLEAPPLICATION_FOUND)
MARK_AS_ADVANCED(QTSINGLEAPPLICATION_INCLUDE_DIR QTSINGLEAPPLICATION_LIBRARY) MARK_AS_ADVANCED(QTSINGLEAPPLICATION_INCLUDE_DIR QTSINGLEAPPLICATION_LIBRARY)
if(NOT TARGET QtSingleApplication::QtSingleApplication)
add_library(QtSingleApplication::QtSingleApplication UNKNOWN IMPORTED)
set_target_properties(QtSingleApplication::QtSingleApplication PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${QTSINGLEAPPLICATION_INCLUDE_DIR}"
)
if(EXISTS "${QTSINGLEAPPLICATION_LIBRARY}")
set_target_properties(QtSingleApplication::QtSingleApplication PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
IMPORTED_LOCATION "${QTSINGLEAPPLICATION_LIBRARY}")
endif()
endif(NOT TARGET QtSingleApplication::QtSingleApplication)

View File

@ -0,0 +1,17 @@
# a helper function which appends source to the main qBt target
# the target name is read from QBT_TARGET_NAME variable
# sources file names are relative to the the ${qbt_executable_SOURCE_DIR}
function (qbt_target_sources)
set (_sources_rel "")
foreach (_source IN ITEMS ${ARGN})
if (IS_ABSOLUTE "${_source}")
set(source_abs "${_source}")
else()
get_filename_component(_source_abs "${_source}" ABSOLUTE)
endif()
file (RELATIVE_PATH _source_rel "${qbt_executable_SOURCE_DIR}" "${_source_abs}")
list (APPEND _sources_rel "${_source_rel}")
endforeach()
target_sources (${QBT_TARGET_NAME} PRIVATE "${_sources_rel}")
endfunction (qbt_target_sources)

View File

@ -3,6 +3,7 @@ set(CMAKE_CXX_STANDARD "11")
add_definitions(-DBOOST_NO_CXX11_RVALUE_REFERENCES) add_definitions(-DBOOST_NO_CXX11_RVALUE_REFERENCES)
include(MacroLinkQtComponents) include(MacroLinkQtComponents)
include(QbtTargetSources)
find_package(LibtorrentRasterbar REQUIRED) find_package(LibtorrentRasterbar REQUIRED)
include_directories(SYSTEM ${LibtorrentRasterbar_INCLUDE_DIRS}) include_directories(SYSTEM ${LibtorrentRasterbar_INCLUDE_DIRS})
@ -88,16 +89,22 @@ set(QBT_USES_QT5 ${QT5})
configure_file(config.h.cmakein ${CMAKE_CURRENT_BINARY_DIR}/config.h) configure_file(config.h.cmakein ${CMAKE_CURRENT_BINARY_DIR}/config.h)
if (GUI)
set(QBT_TARGET_NAME qbittorrent)
else (GUI)
set(QBT_TARGET_NAME qbittorrent-nox)
endif (GUI)
add_subdirectory(base)
if (SYSTEM_QTSINGLEAPPLICATION) if (SYSTEM_QTSINGLEAPPLICATION)
find_package(QtSingleApplication REQUIRED) find_package(QtSingleApplication REQUIRED)
include_directories(${QTSINGLEAPPLICATION_INCLUDE_DIR})
else (SYSTEM_QTSINGLEAPPLICATION) else (SYSTEM_QTSINGLEAPPLICATION)
include_directories(app/qtsingleapplication) add_subdirectory(app/qtsingleapplication)
endif (SYSTEM_QTSINGLEAPPLICATION) endif (SYSTEM_QTSINGLEAPPLICATION)
add_subdirectory(app)
add_subdirectory(base)
if (GUI) if (GUI)
add_subdirectory(gui) add_subdirectory(gui)
endif (GUI) endif (GUI)
@ -106,4 +113,3 @@ if (WEBUI)
add_subdirectory(webui) add_subdirectory(webui)
endif (WEBUI) endif (WEBUI)
add_subdirectory(app)

View File

@ -1,3 +1,4 @@
project(qbt_executable)
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(QBT_APP_HEADERS set(QBT_APP_HEADERS
@ -86,13 +87,10 @@ list(APPEND QBT_APP_HEADERS upgrade.h)
list(APPEND QBT_TARGET_LIBRARIES qbt_base) list(APPEND QBT_TARGET_LIBRARIES qbt_base)
if (GUI) if (GUI)
set(QBT_TARGET_NAME qbittorrent)
list(APPEND QBT_TARGET_LIBRARIES qbt_searchengine qbt_gui) list(APPEND QBT_TARGET_LIBRARIES qbt_searchengine qbt_gui)
include_directories(../gui include_directories(../gui
${CMAKE_CURRENT_BINARY_DIR}/../gui ${CMAKE_CURRENT_BINARY_DIR}/../gui
) )
else (GUI)
set(QBT_TARGET_NAME qbittorrent-nox)
endif (GUI) endif (GUI)
if (WEBUI) if (WEBUI)
@ -152,6 +150,7 @@ add_executable(${QBT_TARGET_NAME} ${QBT_APP_HEADERS} ${QBT_APP_SOURCES} ${QBT_QM
set_target_properties(${QBT_TARGET_NAME} set_target_properties(${QBT_TARGET_NAME}
PROPERTIES PROPERTIES
AUTOUIC True AUTOUIC True
AUTORCC True
MACOSX_BUNDLE True MACOSX_BUNDLE True
) )
@ -159,14 +158,7 @@ if (GUI AND WIN32)
set_target_properties(${QBT_TARGET_NAME} PROPERTIES WIN32_EXECUTABLE True) set_target_properties(${QBT_TARGET_NAME} PROPERTIES WIN32_EXECUTABLE True)
endif (GUI AND WIN32) endif (GUI AND WIN32)
target_link_libraries(${QBT_TARGET_NAME} ${QBT_TARGET_LIBRARIES}) target_link_libraries(${QBT_TARGET_NAME} ${QBT_TARGET_LIBRARIES} QtSingleApplication::QtSingleApplication)
if (SYSTEM_QTSINGLEAPPLICATION)
target_link_libraries(${QBT_TARGET_NAME} ${QTSINGLEAPPLICATION_LIBRARIES})
else (SYSTEM_QTSINGLEAPPLICATION)
add_subdirectory(qtsingleapplication)
target_link_libraries(${QBT_TARGET_NAME} qtsingleapplication)
endif (SYSTEM_QTSINGLEAPPLICATION)
if (APPLE) if (APPLE)
set(qbt_BUNDLE_NAME "${CMAKE_PROJECT_NAME}") set(qbt_BUNDLE_NAME "${CMAKE_PROJECT_NAME}")

View File

@ -1,3 +1,5 @@
project(qtsingleapplication)
set(QBT_QTSINGLEAPPLICATION_HEADERS set(QBT_QTSINGLEAPPLICATION_HEADERS
qtlocalpeer.h qtlocalpeer.h
) )
@ -15,6 +17,7 @@ else (GUI)
endif (GUI) endif (GUI)
add_library(qtsingleapplication ${QBT_QTSINGLEAPPLICATION_HEADERS} ${QBT_QTSINGLEAPPLICATION_SOURCES}) add_library(qtsingleapplication ${QBT_QTSINGLEAPPLICATION_HEADERS} ${QBT_QTSINGLEAPPLICATION_SOURCES})
target_include_directories(qtsingleapplication INTERFACE "${qtsingleapplication_SOURCE_DIR}")
if (QT4_FOUND) if (QT4_FOUND)
target_link_libraries(qtsingleapplication Qt4::QtNetwork) target_link_libraries(qtsingleapplication Qt4::QtNetwork)
@ -30,3 +33,4 @@ if (GUI)
endif(QT4_FOUND) endif(QT4_FOUND)
endif (GUI) endif (GUI)
add_library(QtSingleApplication::QtSingleApplication ALIAS qtsingleapplication)

View File

@ -8,6 +8,7 @@ add_subdirectory(properties)
add_subdirectory(powermanagement) add_subdirectory(powermanagement)
add_subdirectory(rss) add_subdirectory(rss)
add_subdirectory(search) add_subdirectory(search)
if (UNIX AND NOT APPLE AND DBUS) if (UNIX AND NOT APPLE AND DBUS)
add_subdirectory(qtnotify) add_subdirectory(qtnotify)
include_directories(qtnotify) include_directories(qtnotify)
@ -127,7 +128,10 @@ options.ui
torrentcreatordlg.ui torrentcreatordlg.ui
) )
set(QBT_GUI_RESOURCES about.qrc) qbt_target_sources(about.qrc)
add_library(qbt_gui STATIC ${QBT_GUI_HEADERS} ${QBT_GUI_SOURCES} ${QBT_GUI_RESOURCES}) add_library(qbt_gui STATIC ${QBT_GUI_HEADERS} ${QBT_GUI_SOURCES})
target_link_libraries(qbt_gui qbt_lineedit qbt_powermanagement qbt_rss qbt_properties qbt_searchengine ${QBT_GUI_OPTIONAL_LINK_LIBRARIES} qbt_base) target_link_libraries(qbt_gui qbt_lineedit qbt_powermanagement qbt_rss qbt_properties qbt_searchengine
${QBT_GUI_OPTIONAL_LINK_LIBRARIES} qbt_base
QtSingleApplication::QtSingleApplication
)

View File

@ -10,9 +10,11 @@ set(QBT_LINEEDIT_RESOURCES
resources/lineeditimages.qrc resources/lineeditimages.qrc
) )
add_library(qbt_lineedit STATIC ${QBT_LINEEDIT_SOURCES} ${QBT_LINEEDIT_HEADERS} ${QBT_LINEEDIT_RESOURCES}) add_library(qbt_lineedit STATIC ${QBT_LINEEDIT_SOURCES} ${QBT_LINEEDIT_HEADERS})
if (QT4_FOUND) if (QT4_FOUND)
target_link_libraries(qbt_lineedit Qt4::QtGui) target_link_libraries(qbt_lineedit Qt4::QtGui)
else (QT4_FOUND) else (QT4_FOUND)
target_link_libraries(qbt_lineedit Qt5::Widgets) target_link_libraries(qbt_lineedit Qt5::Widgets)
endif (QT4_FOUND) endif (QT4_FOUND)
qbt_target_sources(${QBT_LINEEDIT_RESOURCES})

View File

@ -26,10 +26,11 @@ if (QT4_FOUND)
endif(NOT SYSTEM_QJSON) endif(NOT SYSTEM_QJSON)
endif (QT4_FOUND) endif (QT4_FOUND)
set(QBT_WEBUI_RESOURCES webui.qrc) qbt_target_sources(webui.qrc)
add_library(qbt_webui STATIC ${QBT_WEBUI_HEADERS} ${QBT_WEBUI_SOURCES} ${QBT_WEBUI_RESOURCES})
add_library(qbt_webui STATIC ${QBT_WEBUI_HEADERS} ${QBT_WEBUI_SOURCES})
target_link_libraries(qbt_webui qbt_base) target_link_libraries(qbt_webui qbt_base)
if (QT4_FOUND) if (QT4_FOUND)
target_link_libraries(qbt_webui qjson) target_link_libraries(qbt_webui qjson)
endif (QT4_FOUND) endif (QT4_FOUND)