From dfc3ce723bb42938f9bd8bac4d89072e11208575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Jen=C3=9Fen?= Date: Thu, 19 Sep 2024 18:21:13 +0200 Subject: [PATCH] QmlProjectManager: fix importPaths on device We have converted all import paths to absolute paths, which works on the host but causes issues on the target. To resolve this, we introduce targetImportPaths() Task-number: QDS-12948 Change-Id: I02e32badeaf386e66a6d0806979692439d685450 Reviewed-by: Tim Jenssen --- .../buildsystem/qmlbuildsystem.cpp | 18 +++++++++++++++--- .../buildsystem/qmlbuildsystem.h | 1 + .../qmlprojectrunconfiguration.cpp | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp index 5a64c8b7de0..0a2fff5922f 100644 --- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp +++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp @@ -527,6 +527,7 @@ Utils::FilePath QmlBuildSystem::targetFile(const Utils::FilePath &sourceFile) co const Utils::FilePath relative = sourceFile.relativePathFrom(sourceDir); return targetDirectory().resolvePath(relative); } + void QmlBuildSystem::setSupportedLanguages(QStringList languages) { m_projectItem->setSupportedLanguages(languages); @@ -725,9 +726,20 @@ QStringList QmlBuildSystem::absoluteImportPaths() const { return Utils::transform(m_projectItem->importPaths(), [&](const QString &importPath) { Utils::FilePath filePath = Utils::FilePath::fromString(importPath); - if (!filePath.isAbsolutePath()) - return (projectDirectory() / importPath).toString(); - return projectDirectory().resolvePath(importPath).toString(); + if (filePath.isAbsolutePath()) + return projectDirectory().resolvePath(importPath).path(); + return (projectDirectory() / importPath).path(); + }); +} + +QStringList QmlBuildSystem::targetImportPaths() const +{ + return Utils::transform(allImports(), [&](const QString &importPath) { + const Utils::FilePath filePath = Utils::FilePath::fromString(importPath); + if (filePath.isAbsolutePath()) { + return importPath; + } + return (targetDirectory() / importPath).path(); }); } diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h index 22ea4e443e6..744608b4c18 100644 --- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h +++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h @@ -75,6 +75,7 @@ public: QStringList importPaths() const; QStringList absoluteImportPaths() const; + QStringList targetImportPaths() const; QStringList fileSelectors() const; bool multilanguageSupport() const; diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index 503738eba52..29fb4aac3fc 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -97,7 +97,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id) // arguments from .qmlproject file const QmlBuildSystem *bs = qobject_cast(target->buildSystem()); - for (const QString &importPath : bs->absoluteImportPaths()) { + for (const QString &importPath : bs->targetImportPaths()) { cmd.addArg("-I"); cmd.addArg(importPath); }