From 4ca84d844cc01f9059e8cd0879a440fe19963461 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: Thomas Hartmann --- .../buildsystem/qmlbuildsystem.cpp | 20 +++++++++++++++---- .../buildsystem/qmlbuildsystem.h | 1 + .../qmlprojectrunconfiguration.cpp | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp index 79b20f3c82a..b2f61dc30bb 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); @@ -733,11 +734,22 @@ QStringList QmlBuildSystem::mockImports() const QStringList QmlBuildSystem::absoluteImportPaths() const { - return Utils::transform(allImports(), [&](const QString &importPath) { + 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 3907e8741ed..e76d8ba75c9 100644 --- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h +++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h @@ -77,6 +77,7 @@ public: QStringList importPaths() const; QStringList mockImports() 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); }