diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ ######################### General Requirements ########################## -find_package(ECM 0.0.11 REQUIRED NO_MODULE) +find_package(ECM 5.38 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) include(KDEInstallDirs) @@ -265,6 +265,9 @@ option(USE_QT_DESIGNER "Install KMyMoney specific widget library for Qt-Designer (default=OFF)" OFF) +# Path for binary files (before install) to load plugins even if kmymoney is started from build directory +set(KMM_PLUGIN_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/kmymoney-plugins/kmymoney/") + ######################### The Actual Targets ########################## add_subdirectory( libkgpgfile ) add_subdirectory( tools ) diff --git a/kmymoney/CMakeLists.txt b/kmymoney/CMakeLists.txt --- a/kmymoney/CMakeLists.txt +++ b/kmymoney/CMakeLists.txt @@ -81,7 +81,6 @@ # from transactionsortoption.ui first add_dependencies(kmymoney_common generate_base_ui_srcs kmm_config) add_dependencies(wizardpages widgets) -add_dependencies(dialogs widgets) if(USE_MODELTEST) set( kmymoney_common_LIBS ${kmymoney_common_LIBS} ${QT_QTTEST_LIBRARY}) diff --git a/kmymoney/dialogs/CMakeLists.txt b/kmymoney/dialogs/CMakeLists.txt --- a/kmymoney/dialogs/CMakeLists.txt +++ b/kmymoney/dialogs/CMakeLists.txt @@ -98,6 +98,7 @@ target_link_libraries(dialogs LINK_PUBLIC kmm_widgets + widgets kmm_mymoney onlinetask_interfaces ) diff --git a/kmymoney/main.cpp b/kmymoney/main.cpp --- a/kmymoney/main.cpp +++ b/kmymoney/main.cpp @@ -67,15 +67,21 @@ int main(int argc, char *argv[]) { - /** + /* * Create application first */ QApplication app(argc, argv); KLocalizedString::setApplicationDomain("kmymoney"); - migrateConfigFiles(); - /** + /* Add additional folder to find plugins if started from build directory. + * + * This additional folder is required because our plugin folder is named "kmymoney" which collides with the name of + * our executable. Note: the plugins have to be saved in a subfolder of this path. + */ + QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath() + QDir::separator() + "kmymoney-plugins"); + + /* * construct and register about data */ KAboutData aboutData(QStringLiteral("kmymoney"), i18n("KMyMoney"), QStringLiteral(VERSION)); @@ -91,9 +97,9 @@ #endif if (argc != 0) { - /** - * Create command line parser and feed it with known options - */ + /* + * Create command line parser and feed it with known options + */ QCommandLineParser parser; aboutData.setupCommandLine(&parser); @@ -128,9 +134,9 @@ // url to open parser.addPositionalArgument(QStringLiteral("url"), i18n("file to open")); - /** - * do the command line parsing - */ + /* + * do the command line parsing + */ parser.parse(QApplication::arguments()); bool ishelpSet = parser.isSet(QStringLiteral("help")); @@ -143,9 +149,9 @@ if (parser.isSet(QStringLiteral("version"))) parser.showVersion(); - /** - * handle standard options - */ + /* + * handle standard options + */ aboutData.processCommandLine(&parser); #ifdef KMM_DEBUG @@ -160,7 +166,7 @@ fileUrls = parser.positionalArguments(); } - /** + /* * enable high dpi icons */ app.setAttribute(Qt::AA_UseHighDpiPixmaps); diff --git a/kmymoney/plugins/checkprinting/CMakeLists.txt b/kmymoney/plugins/checkprinting/CMakeLists.txt --- a/kmymoney/plugins/checkprinting/CMakeLists.txt +++ b/kmymoney/plugins/checkprinting/CMakeLists.txt @@ -46,7 +46,8 @@ ki18n_wrap_ui(kcm_checkprinting_PART_SRCS pluginsettingsdecl.ui) -add_library(kcm_checkprinting MODULE ${kcm_checkprinting_PART_SRCS}) +kcoreaddons_add_plugin(kcm_checkprinting SOURCES ${kcm_checkprinting_PART_SRCS} JSON "${CMAKE_CURRENT_BINARY_DIR}/checkprinting.json" INSTALL_NAMESPACE "kmymoney") +set_target_properties(kcm_checkprinting PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") kcoreaddons_desktop_to_json(kcm_checkprinting kcm_checkprinting.desktop) diff --git a/kmymoney/plugins/kbanking/CMakeLists.txt b/kmymoney/plugins/kbanking/CMakeLists.txt --- a/kmymoney/plugins/kbanking/CMakeLists.txt +++ b/kmymoney/plugins/kbanking/CMakeLists.txt @@ -17,7 +17,8 @@ kconfig_add_kcfg_files(kbanking_PART_SRCS kbankingsettings.kcfgc) -add_library(kbanking MODULE ${kbanking_PART_SRCS}) +kcoreaddons_add_plugin(kbanking SOURCES ${kbanking_PART_SRCS} JSON "${CMAKE_CURRENT_BINARY_DIR}/kbanking.json" INSTALL_NAMESPACE "kmymoney") +set_target_properties(kbanking PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") target_link_libraries(kbanking kbanking_dialogs diff --git a/kmymoney/plugins/ofx/import/CMakeLists.txt b/kmymoney/plugins/ofx/import/CMakeLists.txt --- a/kmymoney/plugins/ofx/import/CMakeLists.txt +++ b/kmymoney/plugins/ofx/import/CMakeLists.txt @@ -20,7 +20,8 @@ ki18n_wrap_ui(ofximporter_PART_SRCS ${ofximporter_PART_UI}) -add_library(ofximporter MODULE ${ofximporter_PART_SRCS}) +kcoreaddons_add_plugin(ofximporter SOURCES ${ofximporter_PART_SRCS} JSON "${CMAKE_CURRENT_BINARY_DIR}/ofximporter.json" INSTALL_NAMESPACE "kmymoney") +set_target_properties(ofximporter PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") target_link_libraries(ofximporter ofximporter_dialogs diff --git a/kmymoney/plugins/onlinejobpluginmockup/CMakeLists.txt b/kmymoney/plugins/onlinejobpluginmockup/CMakeLists.txt --- a/kmymoney/plugins/onlinejobpluginmockup/CMakeLists.txt +++ b/kmymoney/plugins/onlinejobpluginmockup/CMakeLists.txt @@ -6,7 +6,8 @@ onlinejobpluginmockup.cpp ) -add_library(onlinejobpluginmockup MODULE ${onlinejobpluginmockup_PART_SRCS}) +kcoreaddons_add_plugin(onlinejobpluginmockup SOURCES ${onlinejobpluginmockup_PART_SRCS} JSON "${CMAKE_CURRENT_BINARY_DIR}/onlinejobpluginmockup.json" INSTALL_NAMESPACE "kmymoney") +set_target_properties(onlinejobpluginmockup PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") target_link_libraries(onlinejobpluginmockup kmm_mymoney diff --git a/kmymoney/plugins/onlinetasks/sepa/CMakeLists.txt b/kmymoney/plugins/onlinetasks/sepa/CMakeLists.txt --- a/kmymoney/plugins/onlinetasks/sepa/CMakeLists.txt +++ b/kmymoney/plugins/onlinetasks/sepa/CMakeLists.txt @@ -19,9 +19,8 @@ add_library(konlinetasks_sepa_interface INTERFACE) -add_library(konlinetasks_sepa MODULE - ${sepaOnlineTasks_SRCS} -) +kcoreaddons_add_plugin(konlinetasks_sepa SOURCES ${sepaOnlineTasks_SRCS} JSON "${CMAKE_CURRENT_BINARY_DIR}/kmymoney-sepaorders.json" INSTALL_NAMESPACE "kmymoney") +set_target_properties(konlinetasks_sepa PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") # TODO some dependencies can be moved to konlinetasks_sepa target_link_libraries( konlinetasks_sepa_interface diff --git a/kmymoney/plugins/qif/config/CMakeLists.txt b/kmymoney/plugins/qif/config/CMakeLists.txt --- a/kmymoney/plugins/qif/config/CMakeLists.txt +++ b/kmymoney/plugins/qif/config/CMakeLists.txt @@ -8,6 +8,7 @@ ki18n_wrap_ui(kcm_qif_PART_SRCS mymoneyqifprofileeditor.ui) add_library(kcm_qif MODULE ${kcm_qif_PART_SRCS}) +set_target_properties(kcm_qif PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") if(ENABLE_QIFIMPORTER) kcoreaddons_desktop_to_json(kcm_qif kcm_qifimporter.desktop) diff --git a/kmymoney/plugins/qif/export/CMakeLists.txt b/kmymoney/plugins/qif/export/CMakeLists.txt --- a/kmymoney/plugins/qif/export/CMakeLists.txt +++ b/kmymoney/plugins/qif/export/CMakeLists.txt @@ -17,7 +17,8 @@ ki18n_wrap_ui(qifexporter_PART_SRCS ${qifexporter_PART_UI}) -add_library(qifexporter MODULE ${qifexporter_PART_SRCS}) +kcoreaddons_add_plugin(qifexporter SOURCES ${qifexporter_PART_SRCS} JSON "${CMAKE_CURRENT_BINARY_DIR}/qifexporter.json" INSTALL_NAMESPACE "kmymoney") +set_target_properties(qifexporter PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") target_link_libraries(qifexporter kmm_plugin diff --git a/kmymoney/plugins/qif/import/CMakeLists.txt b/kmymoney/plugins/qif/import/CMakeLists.txt --- a/kmymoney/plugins/qif/import/CMakeLists.txt +++ b/kmymoney/plugins/qif/import/CMakeLists.txt @@ -16,7 +16,8 @@ ki18n_wrap_ui(qifimporter_PART_SRCS ${qifimporter_PART_UI}) -add_library(qifimporter MODULE ${qifimporter_PART_SRCS}) +kcoreaddons_add_plugin(qifimporter SOURCES ${qifimporter_PART_SRCS} JSON "${CMAKE_CURRENT_BINARY_DIR}/qifimporter.json" INSTALL_NAMESPACE "kmymoney") +set_target_properties(qifimporter PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") target_link_libraries(qifimporter kmm_plugin diff --git a/kmymoney/plugins/reconciliationreport/CMakeLists.txt b/kmymoney/plugins/reconciliationreport/CMakeLists.txt --- a/kmymoney/plugins/reconciliationreport/CMakeLists.txt +++ b/kmymoney/plugins/reconciliationreport/CMakeLists.txt @@ -11,7 +11,8 @@ ki18n_wrap_ui(reconciliationreport_PART_SRCS kreconciliationreportdlgdecl.ui ) -add_library(reconciliationreport MODULE ${reconciliationreport_PART_SRCS}) +kcoreaddons_add_plugin(reconciliationreport SOURCES ${reconciliationreport_PART_SRCS} JSON "${CMAKE_CURRENT_BINARY_DIR}/reconciliationreport.json" INSTALL_NAMESPACE "kmymoney") +set_target_properties(reconciliationreport PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") target_link_libraries(reconciliationreport Qt5::PrintSupport diff --git a/kmymoney/plugins/weboob/CMakeLists.txt b/kmymoney/plugins/weboob/CMakeLists.txt --- a/kmymoney/plugins/weboob/CMakeLists.txt +++ b/kmymoney/plugins/weboob/CMakeLists.txt @@ -15,7 +15,8 @@ weboob.cpp ) -add_library(weboob MODULE ${weboob_PART_SRCS}) +kcoreaddons_add_plugin(weboob SOURCES ${weboob_PART_SRCS} JSON "${CMAKE_CURRENT_BINARY_DIR}/weboob.json" INSTALL_NAMESPACE "kmymoney") +set_target_properties(weboob PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${KMM_PLUGIN_OUTPUT_DIRECTORY}") target_link_libraries(weboob weboob_dialogs