From e6bda58033befaa0d013a826637e8e966410a5b5 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 27 May 2019 16:59:00 +0200 Subject: [PATCH] CompilationDBProjectManager: Handle relative sysroot Fixes: QTCREATORBUG-22388 Change-Id: I030b105897bd483c17aaf86229d4515b2dd747d3 Reviewed-by: Nikolai Kosjar --- .../compilationdatabaseutils.cpp | 2 +- tests/unit/unittest/compilationdatabaseutils-test.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp index 96434540d2d..1affca78fa3 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp @@ -186,7 +186,7 @@ void filteredFlags(const QString &fileName, if (flag.startsWith("--sysroot=")) { if (sysRoot.isEmpty()) - sysRoot = flag.mid(10); + sysRoot = updatedPathFlag(flag.mid(10), workingDir); continue; } diff --git a/tests/unit/unittest/compilationdatabaseutils-test.cpp b/tests/unit/unittest/compilationdatabaseutils-test.cpp index 11ad1f4cf7d..cae74fa807f 100644 --- a/tests/unit/unittest/compilationdatabaseutils-test.cpp +++ b/tests/unit/unittest/compilationdatabaseutils-test.cpp @@ -97,7 +97,8 @@ TEST_F(CompilationDatabaseUtils, FilterArguments) QString::fromUtf8(HostOsInfo::isWindowsHost() ? winPath2 : otherPath2), "-x", "c++", - "--sysroot=C:\\sysroot\\embedded", + QString("--sysroot=") + (HostOsInfo::isWindowsHost() + ? "C:\\sysroot\\embedded" : "/opt/sysroot/embedded"), "C:\\qt-creator\\src\\plugins\\cpptools\\compileroptionsbuilder.cpp"}, "compileroptionsbuilder"); @@ -120,7 +121,8 @@ TEST_F(CompilationDatabaseUtils, FilterArguments) {"RELATIVE_PLUGIN_PATH", "\"../lib/qtcreator/plugins\""}, {"QT_CREATOR", "1"}})); ASSERT_THAT(fileKind, CppTools::ProjectFile::Kind::CXXSource); - ASSERT_THAT(sysRoot, QString("C:\\sysroot\\embedded")); + ASSERT_THAT(sysRoot, HostOsInfo::isWindowsHost() ? QString("C:\\sysroot\\embedded") + : QString("/opt/sysroot/embedded")); } static QString kCmakeCommand