diff --git a/kioslave/remote/CMakeLists.txt b/kioslave/remote/CMakeLists.txt index 30691a6a3..558d2c6a2 100644 --- a/kioslave/remote/CMakeLists.txt +++ b/kioslave/remote/CMakeLists.txt @@ -1,10 +1,20 @@ add_definitions(-DTRANSLATION_DOMAIN=\"kio_remote\") add_subdirectory( kdedmodule ) add_subdirectory( tests ) -add_library(kio_remote MODULE kio_remote.cpp remoteimpl.cpp kio_remote_debug.cpp) +set(kio_remote_SRCS + kio_remote.cpp + remoteimpl.cpp + ) + +ecm_qt_declare_logging_category(kio_remote_SRCS HEADER debug.h + IDENTIFIER KIOREMOTE_LOG + CATEGORY_NAME log_kioremote + DEFAULT_SEVERITY Info) + +add_library(kio_remote MODULE ${kio_remote_SRCS}) target_link_libraries(kio_remote KF5::KIOCore KF5::KDELibs4Support) install(TARGETS kio_remote DESTINATION ${KDE_INSTALL_PLUGINDIR} ) install( FILES remote.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) diff --git a/kioslave/remote/kdedmodule/CMakeLists.txt b/kioslave/remote/kdedmodule/CMakeLists.txt index a3d98ea0f..493d8ea8c 100644 --- a/kioslave/remote/kdedmodule/CMakeLists.txt +++ b/kioslave/remote/kdedmodule/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(remotedirnotify MODULE remotedirnotify.cpp remotedirnotifymodule.cpp ../kio_remote_debug.cpp) +add_library(remotedirnotify MODULE remotedirnotify.cpp remotedirnotifymodule.cpp ../debug.cpp) kcoreaddons_desktop_to_json(remotedirnotify remotedirnotify.desktop) target_link_libraries(remotedirnotify KF5::DBusAddons KF5::KIOCore KF5::KDELibs4Support) install(TARGETS remotedirnotify DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kded ) diff --git a/kioslave/remote/kdedmodule/remotedirnotify.cpp b/kioslave/remote/kdedmodule/remotedirnotify.cpp index cb0b50649..23b05400b 100644 --- a/kioslave/remote/kdedmodule/remotedirnotify.cpp +++ b/kioslave/remote/kdedmodule/remotedirnotify.cpp @@ -1,144 +1,144 @@ /* This file is part of the KDE Project Copyright (c) 2004 Kévin Ottens This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "remotedirnotify.h" -#include "../kio_remote_debug.h" +#include "../debug.h" #include #include #include #include #include #include RemoteDirNotify::RemoteDirNotify() { KGlobal::dirs()->addResourceType("remote_entries", "data", "remoteview"); const QString path = KGlobal::dirs()->saveLocation("remote_entries"); m_baseURL.setPath(path); QDBusConnection::sessionBus().connect(QString(), QString(), QStringLiteral("org.kde.KDirNotify"), QStringLiteral("FilesAdded"), this, SLOT(FilesAdded(QString))); QDBusConnection::sessionBus().connect(QString(), QString(), QStringLiteral("org.kde.KDirNotify"), QStringLiteral("FilesRemoved"), this, SLOT(FilesRemoved(QStringList))); QDBusConnection::sessionBus().connect(QString(), QString(), QStringLiteral("org.kde.KDirNotify"), QStringLiteral("FilesChanged"), this, SLOT(FilesChanged(QStringList))); } KUrl RemoteDirNotify::toRemoteURL(const KUrl &url) { qCDebug(KIOREMOTE_LOG) << "RemoteDirNotify::toRemoteURL(" << url << ")"; if ( m_baseURL.isParentOf(url) ) { QString path = KUrl::relativePath(m_baseURL.path(), url.path()); KUrl result("remote:/"+path); result.cleanPath(); qCDebug(KIOREMOTE_LOG) << "result => " << result; return result; } qCDebug(KIOREMOTE_LOG) << "result => KUrl()"; return KUrl(); } KUrl::List RemoteDirNotify::toRemoteURLList(const KUrl::List &list) { KUrl::List new_list; KUrl::List::const_iterator it = list.begin(); KUrl::List::const_iterator end = list.end(); for (; it!=end; ++it) { KUrl url = toRemoteURL(*it); if (url.isValid()) { new_list.append(url); } } return new_list; } void RemoteDirNotify::FilesAdded(const QString &directory) { qCDebug(KIOREMOTE_LOG) << "RemoteDirNotify::FilesAdded"; KUrl new_dir = toRemoteURL(directory); if (new_dir.isValid()) { org::kde::KDirNotify::emitFilesAdded( new_dir.url() ); } } // This hack is required because of the way we manage .desktop files with // Forwarding Slaves, their URL is out of the ioslave (most remote:/ files // have a file:/ based UDS_URL so that they are executed correctly. // Hence, FilesRemoved and FilesChanged does nothing... We're forced to use // FilesAdded to re-list the modified directory. inline void evil_hack(const KUrl::List &list) { KUrl::List notified; KUrl::List::const_iterator it = list.begin(); KUrl::List::const_iterator end = list.end(); for (; it!=end; ++it) { KUrl url = (*it).upUrl(); if (!notified.contains(url)) { org::kde::KDirNotify::emitFilesAdded(url.url()); notified.append(url); } } } void RemoteDirNotify::FilesRemoved(const QStringList &fileList) { qCDebug(KIOREMOTE_LOG) << "RemoteDirNotify::FilesRemoved"; KUrl::List new_list = toRemoteURLList(fileList); if (!new_list.isEmpty()) { //KDirNotify_stub notifier("*", "*"); //notifier.FilesRemoved( new_list ); evil_hack(new_list); } } void RemoteDirNotify::FilesChanged(const QStringList &fileList) { qCDebug(KIOREMOTE_LOG) << "RemoteDirNotify::FilesChanged"; KUrl::List new_list = toRemoteURLList(fileList); if (!new_list.isEmpty()) { //KDirNotify_stub notifier("*", "*"); //notifier.FilesChanged( new_list ); evil_hack(new_list); } } diff --git a/kioslave/remote/kio_remote.cpp b/kioslave/remote/kio_remote.cpp index df45253cb..cb4d07500 100644 --- a/kioslave/remote/kio_remote.cpp +++ b/kioslave/remote/kio_remote.cpp @@ -1,232 +1,232 @@ /* This file is part of the KDE project Copyright (c) 2004 Kevin Ottens This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "kio_remote.h" -#include "kio_remote_debug.h" +#include "debug.h" #include #include extern "C" { int Q_DECL_EXPORT kdemain( int argc, char **argv ) { // necessary to use other kio slaves QCoreApplication app(argc, argv); app.setApplicationName("kio_remote"); // start the slave RemoteProtocol slave( argv[1], argv[2], argv[3] ); slave.dispatchLoop(); return 0; } } RemoteProtocol::RemoteProtocol(const QByteArray &protocol, const QByteArray &pool, const QByteArray &app) : SlaveBase(protocol, pool, app) { } RemoteProtocol::~RemoteProtocol() { } void RemoteProtocol::listDir(const QUrl &url) { qCDebug(KIOREMOTE_LOG) << "RemoteProtocol::listDir: " << url; if ( url.path().length() <= 1 ) { listRoot(); return; } int second_slash_idx = url.path().indexOf( '/', 1 ); const QString root_dirname = url.path().mid( 1, second_slash_idx-1 ); KUrl target = m_impl.findBaseURL( root_dirname ); qCDebug(KIOREMOTE_LOG) << "possible redirection target : " << target; if( target.isValid() ) { if ( second_slash_idx < 0 ) { second_slash_idx = url.path().size(); } target.addPath( url.path().remove(0, second_slash_idx) ); qCDebug(KIOREMOTE_LOG) << "complete redirection target : " << target; redirection(target); finished(); return; } error(KIO::ERR_MALFORMED_URL, url.toDisplayString()); } void RemoteProtocol::listRoot() { KIO::UDSEntry entry; KIO::UDSEntryList remote_entries; m_impl.listRoot(remote_entries); totalSize(remote_entries.count()+2); m_impl.createTopLevelEntry(entry); listEntry(entry); if(m_impl.createWizardEntry(entry)) listEntry(entry); KIO::UDSEntryList::ConstIterator it = remote_entries.constBegin(); const KIO::UDSEntryList::ConstIterator end = remote_entries.constEnd(); for(; it!=end; ++it) { listEntry(*it); } entry.clear(); finished(); } void RemoteProtocol::stat(const QUrl &url) { qCDebug(KIOREMOTE_LOG) << "RemoteProtocol::stat: " << url; QString path = url.path(); if ( path.isEmpty() || path == QLatin1String("/") ) { // The root is "virtual" - it's not a single physical directory KIO::UDSEntry entry; m_impl.createTopLevelEntry( entry ); statEntry( entry ); finished(); return; } if (m_impl.isWizardURL(url)) { KIO::UDSEntry entry; if (m_impl.createWizardEntry(entry)) { statEntry(entry); finished(); } else { error(KIO::ERR_DOES_NOT_EXIST, url.toDisplayString()); } return; } int second_slash_idx = url.path().indexOf( '/', 1 ); const QString root_dirname = url.path().mid( 1, second_slash_idx-1 ); if ( second_slash_idx==-1 || ( (int)url.path().length() )==second_slash_idx+1 ) { KIO::UDSEntry entry; if (m_impl.statNetworkFolder(entry, root_dirname)) { statEntry(entry); finished(); return; } } else { KUrl target = m_impl.findBaseURL( root_dirname ); qCDebug(KIOREMOTE_LOG) << "possible redirection target : " << target; if ( target.isValid() ) { if ( second_slash_idx < 0 ) { second_slash_idx = url.path().size(); } qCDebug(KIOREMOTE_LOG) << "complete redirection target : " << target; target.addPath( url.path().remove( 0, second_slash_idx ) ); redirection( target ); finished(); return; } } error(KIO::ERR_MALFORMED_URL, url.toDisplayString()); } void RemoteProtocol::del(const QUrl &url, bool /*isFile*/) { qCDebug(KIOREMOTE_LOG) << "RemoteProtocol::del: " << url; if (!m_impl.isWizardURL(url) && m_impl.deleteNetworkFolder(url.fileName())) { finished(); return; } error(KIO::ERR_CANNOT_DELETE, url.toDisplayString()); } void RemoteProtocol::get(const QUrl &url) { qCDebug(KIOREMOTE_LOG) << "RemoteProtocol::get: " << url; const QString file = m_impl.findDesktopFile( url.fileName() ); qCDebug(KIOREMOTE_LOG) << "desktop file : " << file; if (!file.isEmpty()) { KUrl desktop; desktop.setPath(file); redirection(desktop); finished(); return; } error(KIO::ERR_MALFORMED_URL, url.toDisplayString()); } void RemoteProtocol::rename(const QUrl &src, const QUrl &dest, KIO::JobFlags flags) { if (src.scheme()!=QLatin1String("remote") || dest.scheme()!=QLatin1String("remote") || m_impl.isWizardURL(src) || m_impl.isWizardURL(dest)) { error(KIO::ERR_UNSUPPORTED_ACTION, src.toDisplayString()); return; } if (m_impl.renameFolders(src.fileName(), dest.fileName(), flags & KIO::Overwrite)) { finished(); return; } error(KIO::ERR_CANNOT_RENAME, src.toDisplayString()); } void RemoteProtocol::symlink(const QString &target, const QUrl &dest, KIO::JobFlags flags) { if (m_impl.changeFolderTarget(dest.fileName(), target, flags & KIO::Overwrite)) { finished(); return; } error(KIO::ERR_CANNOT_SYMLINK, dest.toDisplayString()); } diff --git a/kioslave/remote/kio_remote_debug.cpp b/kioslave/remote/kio_remote_debug.cpp deleted file mode 100644 index 40d4519fc..000000000 --- a/kioslave/remote/kio_remote_debug.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2014 Laurent Montel - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "kio_remote_debug.h" -Q_LOGGING_CATEGORY(KIOREMOTE_LOG, "log_kioremote") - - diff --git a/kioslave/remote/kio_remote_debug.h b/kioslave/remote/kio_remote_debug.h deleted file mode 100644 index 961c2558f..000000000 --- a/kioslave/remote/kio_remote_debug.h +++ /dev/null @@ -1,27 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2014 Laurent Montel - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef KIO_REMOTE_DEBUG_H -#define KIO_REMOTE_DEBUG_H - -#include -Q_DECLARE_LOGGING_CATEGORY(KIOREMOTE_LOG) - -#endif - diff --git a/kioslave/remote/remoteimpl.cpp b/kioslave/remote/remoteimpl.cpp index 18993fb9b..56ce13c34 100644 --- a/kioslave/remote/remoteimpl.cpp +++ b/kioslave/remote/remoteimpl.cpp @@ -1,313 +1,313 @@ /* This file is part of the KDE project Copyright (c) 2004 Kevin Ottens This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "remoteimpl.h" -#include "kio_remote_debug.h" +#include "debug.h" #include #include #include #include #include #include #include #include #include #include #define WIZARD_URL "remote:/x-wizard_service.desktop" #define WIZARD_SERVICE "org.kde.knetattach" RemoteImpl::RemoteImpl() { KGlobal::dirs()->addResourceType("remote_entries", "data", "remoteview"); const QString path = KGlobal::dirs()->saveLocation("remote_entries"); QDir dir = path; if (!dir.exists()) { dir.cdUp(); dir.mkdir(QStringLiteral("remoteview")); } } void RemoteImpl::listRoot(KIO::UDSEntryList &list) const { qCDebug(KIOREMOTE_LOG) << "RemoteImpl::listRoot"; QStringList names_found; const QStringList dirList = KGlobal::dirs()->resourceDirs("remote_entries"); QStringList::ConstIterator dirpath = dirList.constBegin(); const QStringList::ConstIterator end = dirList.constEnd(); for(; dirpath!=end; ++dirpath) { QDir dir = *dirpath; if (!dir.exists()) continue; const QStringList filenames = dir.entryList( QDir::Files | QDir::Readable ); KIO::UDSEntry entry; QStringList::ConstIterator name = filenames.constBegin(); QStringList::ConstIterator endf = filenames.constEnd(); for(; name!=endf; ++name) { if (!names_found.contains(*name)) { entry.clear(); createEntry(entry, *dirpath, *name); list.append(entry); names_found.append(*name); } } } } bool RemoteImpl::findDirectory(const QString &filename, QString &directory) const { qCDebug(KIOREMOTE_LOG) << "RemoteImpl::findDirectory"; const QStringList dirList = KGlobal::dirs()->resourceDirs("remote_entries"); QStringList::ConstIterator dirpath = dirList.constBegin(); const QStringList::ConstIterator end = dirList.constEnd(); for(; dirpath!=end; ++dirpath) { QDir dir = *dirpath; if (!dir.exists()) continue; QStringList filenames = dir.entryList( QDir::Files | QDir::Readable ); KIO::UDSEntry entry; QStringList::ConstIterator name = filenames.constBegin(); QStringList::ConstIterator endf = filenames.constEnd(); for(; name!=endf; ++name) { if (*name==filename) { directory = *dirpath; return true; } } } return false; } QString RemoteImpl::findDesktopFile(const QString &filename) const { qCDebug(KIOREMOTE_LOG) << "RemoteImpl::findDesktopFile"; QString directory; if (findDirectory(filename+".desktop", directory)) { return directory+filename+".desktop"; } return QString(); } KUrl RemoteImpl::findBaseURL(const QString &filename) const { qCDebug(KIOREMOTE_LOG) << "RemoteImpl::findBaseURL"; const QString file = findDesktopFile(filename); if (!file.isEmpty()) { KDesktopFile desktop( file ); return desktop.readUrl(); } return KUrl(); } void RemoteImpl::createTopLevelEntry(KIO::UDSEntry &entry) const { entry.clear(); entry.insert( KIO::UDSEntry::UDS_NAME, QString::fromLatin1(".")); entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); entry.insert( KIO::UDSEntry::UDS_ACCESS, 0777); entry.insert( KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory")); entry.insert( KIO::UDSEntry::UDS_ICON_NAME, QString::fromLatin1("folder-remote")); entry.insert( KIO::UDSEntry::UDS_USER, QString::fromLatin1("root")); entry.insert( KIO::UDSEntry::UDS_GROUP, QString::fromLatin1("root")); } static KUrl findWizardRealURL() { KUrl url; KService::Ptr service = KService::serviceByDesktopName(WIZARD_SERVICE); if (service && service->isValid()) { url.setPath( KStandardDirs::locate("apps", service->entryPath()) ); } return url; } bool RemoteImpl::createWizardEntry(KIO::UDSEntry &entry) const { entry.clear(); KUrl url = findWizardRealURL(); if (!url.isValid()) { return false; } entry.insert( KIO::UDSEntry::UDS_NAME, i18n("Add Network Folder")); entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG); entry.insert( KIO::UDSEntry::UDS_URL, QString::fromLatin1(WIZARD_URL) ); entry.insert( KIO::UDSEntry::UDS_LOCAL_PATH, url.path()); entry.insert( KIO::UDSEntry::UDS_ACCESS, 0500); entry.insert( KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("application/x-desktop")); entry.insert( KIO::UDSEntry::UDS_ICON_NAME, QString::fromLatin1("folder-new")); return true; } bool RemoteImpl::isWizardURL(const KUrl &url) const { return url==KUrl(WIZARD_URL); } void RemoteImpl::createEntry(KIO::UDSEntry &entry, const QString &directory, const QString &file) const { qCDebug(KIOREMOTE_LOG) << "RemoteImpl::createEntry"; KDesktopFile desktop(directory+file); qCDebug(KIOREMOTE_LOG) << "path = " << directory << file; entry.clear(); QString new_filename = file; new_filename.truncate( file.length()-8); entry.insert( KIO::UDSEntry::UDS_NAME, desktop.readName()); entry.insert( KIO::UDSEntry::UDS_URL, "remote:/"+new_filename); entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); entry.insert( KIO::UDSEntry::UDS_ACCESS, 0500); entry.insert( KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory")); const QString icon = desktop.readIcon(); entry.insert( KIO::UDSEntry::UDS_ICON_NAME, icon); entry.insert( KIO::UDSEntry::UDS_LINK_DEST, desktop.readUrl()); entry.insert( KIO::UDSEntry::UDS_TARGET_URL, desktop.readUrl()); } bool RemoteImpl::statNetworkFolder(KIO::UDSEntry &entry, const QString &filename) const { qCDebug(KIOREMOTE_LOG) << "RemoteImpl::statNetworkFolder: " << filename; QString directory; if (findDirectory(filename+".desktop", directory)) { createEntry(entry, directory, filename+".desktop"); return true; } return false; } bool RemoteImpl::deleteNetworkFolder(const QString &filename) const { qCDebug(KIOREMOTE_LOG) << "RemoteImpl::deleteNetworkFolder: " << filename; QString directory; if (findDirectory(filename+".desktop", directory)) { qCDebug(KIOREMOTE_LOG) << "Removing " << directory << filename << ".desktop"; return QFile::remove(directory+filename+".desktop"); } return false; } bool RemoteImpl::renameFolders(const QString &src, const QString &dest, bool overwrite) const { qCDebug(KIOREMOTE_LOG) << "RemoteImpl::renameFolders: " << src << ", " << dest << endl; QString directory; if (findDirectory(src+".desktop", directory)) { if (!overwrite && QFile::exists(directory+dest+".desktop")) { return false; } qCDebug(KIOREMOTE_LOG) << "Renaming " << directory << src << ".desktop"; QDir dir(directory); bool res = dir.rename(src+".desktop", dest+".desktop"); if (res) { KDesktopFile desktop(directory+dest+".desktop"); desktop.desktopGroup().writeEntry("Name", dest); } return res; } return false; } bool RemoteImpl::changeFolderTarget(const QString &src, const QString &target, bool overwrite) const { qCDebug(KIOREMOTE_LOG) << "RemoteImpl::changeFolderTarget: " << src << ", " << target << endl; QString directory; if (findDirectory(src+".desktop", directory)) { if (!overwrite || !QFile::exists(directory+src+".desktop")) { return false; } qCDebug(KIOREMOTE_LOG) << "Changing target " << directory << src << ".desktop"; KDesktopFile desktop(directory+src+".desktop"); desktop.desktopGroup().writeEntry("URL", target); return true; } return false; } diff --git a/kioslave/remote/tests/CMakeLists.txt b/kioslave/remote/tests/CMakeLists.txt index 00b6deff1..47e3fd187 100644 --- a/kioslave/remote/tests/CMakeLists.txt +++ b/kioslave/remote/tests/CMakeLists.txt @@ -1,16 +1,15 @@ set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} ) -set(libkioremote_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/../kio_remote.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../remoteimpl.cpp ../kio_remote_debug.cpp) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..) ########### next target ############### -set(testremote_SRCS testremote.cpp ${libkioremote_SRCS} ) +set(testremote_SRCS testremote.cpp ${kio_remote_SRCS} ) add_executable(testremote ${testremote_SRCS}) ecm_mark_as_test(testremote) target_link_libraries(testremote KF5::KDELibs4Support KF5::KIOCore )