diff --git a/cmake/Modules/QbtTargetSources.cmake b/cmake/Modules/QbtTargetSources.cmake new file mode 100644 index 000000000..ced0e4b58 --- /dev/null +++ b/cmake/Modules/QbtTargetSources.cmake @@ -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) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 15ebe5068..49afb2e19 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,6 +3,7 @@ set(CMAKE_CXX_STANDARD "11") add_definitions(-DBOOST_NO_CXX11_RVALUE_REFERENCES) include(MacroLinkQtComponents) +include(QbtTargetSources) find_package(LibtorrentRasterbar REQUIRED) include_directories(SYSTEM ${LibtorrentRasterbar_INCLUDE_DIRS}) @@ -88,8 +89,12 @@ set(QBT_USES_QT5 ${QT5}) 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) find_package(QtSingleApplication REQUIRED) @@ -98,6 +103,9 @@ else (SYSTEM_QTSINGLEAPPLICATION) include_directories(app/qtsingleapplication) endif (SYSTEM_QTSINGLEAPPLICATION) +add_subdirectory(app) +add_subdirectory(base) + if (GUI) add_subdirectory(gui) endif (GUI) @@ -106,4 +114,3 @@ if (WEBUI) add_subdirectory(webui) endif (WEBUI) -add_subdirectory(app) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index ff903ba05..0a2e4a954 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -1,3 +1,4 @@ +project(qbt_executable) include_directories(${CMAKE_CURRENT_BINARY_DIR}) set(QBT_APP_HEADERS @@ -86,13 +87,10 @@ list(APPEND QBT_APP_HEADERS upgrade.h) list(APPEND QBT_TARGET_LIBRARIES qbt_base) if (GUI) - set(QBT_TARGET_NAME qbittorrent) list(APPEND QBT_TARGET_LIBRARIES qbt_searchengine qbt_gui) include_directories(../gui ${CMAKE_CURRENT_BINARY_DIR}/../gui ) -else (GUI) - set(QBT_TARGET_NAME qbittorrent-nox) endif (GUI) 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} PROPERTIES AUTOUIC True + AUTORCC True MACOSX_BUNDLE True ) diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 1457eab29..0223b5eda 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -8,6 +8,7 @@ add_subdirectory(properties) add_subdirectory(powermanagement) add_subdirectory(rss) add_subdirectory(search) + if (UNIX AND NOT APPLE AND DBUS) add_subdirectory(qtnotify) include_directories(qtnotify) @@ -127,7 +128,7 @@ options.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) diff --git a/src/gui/lineedit/CMakeLists.txt b/src/gui/lineedit/CMakeLists.txt index 8887b855f..ced27991e 100644 --- a/src/gui/lineedit/CMakeLists.txt +++ b/src/gui/lineedit/CMakeLists.txt @@ -10,9 +10,11 @@ set(QBT_LINEEDIT_RESOURCES 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) target_link_libraries(qbt_lineedit Qt4::QtGui) else (QT4_FOUND) target_link_libraries(qbt_lineedit Qt5::Widgets) endif (QT4_FOUND) + +qbt_target_sources(${QBT_LINEEDIT_RESOURCES}) diff --git a/src/webui/CMakeLists.txt b/src/webui/CMakeLists.txt index 7f282884d..d3b5670f9 100644 --- a/src/webui/CMakeLists.txt +++ b/src/webui/CMakeLists.txt @@ -26,10 +26,11 @@ if (QT4_FOUND) endif(NOT SYSTEM_QJSON) endif (QT4_FOUND) -set(QBT_WEBUI_RESOURCES webui.qrc) -add_library(qbt_webui STATIC ${QBT_WEBUI_HEADERS} ${QBT_WEBUI_SOURCES} ${QBT_WEBUI_RESOURCES}) +qbt_target_sources(webui.qrc) + +add_library(qbt_webui STATIC ${QBT_WEBUI_HEADERS} ${QBT_WEBUI_SOURCES}) target_link_libraries(qbt_webui qbt_base) if (QT4_FOUND) - target_link_libraries(qbt_webui qjson) + target_link_libraries(qbt_webui qjson) endif (QT4_FOUND)