From 1d1dde0f9bb0749bec39438477707cab1d8684c1 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 12 Nov 2019 10:39:18 +0100 Subject: [PATCH] McuSupport: Avoid mix of dir separator styles for CMake parameter Qt Creator's CMake plugin would otherwise (since recently) open that "sync" dialog if a configuration path contains back slashes. Change-Id: I2e333604e22158bdb61c2ca8eb65911295383b52 Reviewed-by: Alessandro Portale --- src/plugins/mcusupport/mcusupportoptions.cpp | 22 ++++++++++--------- src/plugins/mcusupport/mcusupportoptions.h | 1 + .../mcusupport/mcusupportoptionspage.cpp | 1 + 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index 901642d2c06..91d69ceb8d6 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -350,6 +350,7 @@ McuSupportOptions::McuSupportOptions(QObject *parent) PackageOptions* seggerJLinkPackage = createSeggerJLinkPackage(); toolchainPackage = armGccPackage; + qulSdkPackage = qulPackage; auto stmEvalPackages = { armGccPackage, stm32CubeProgrammerPackage, qulPackage}; @@ -442,12 +443,12 @@ static bool isDesktop(const BoardOptions* board) return board->qulPlatform() == "Qt"; } -static void setKitProperties(const McuSupportOptions *options, ProjectExplorer::Kit *k, +static void setKitProperties(const QString &kitName, ProjectExplorer::Kit *k, const BoardOptions* board) { using namespace ProjectExplorer; - k->setUnexpandedDisplayName(options->kitName(board)); + k->setUnexpandedDisplayName(kitName); k->setValue(Constants::KIT_BOARD_VENDOR_KEY, board->vendor()); k->setValue(Constants::KIT_BOARD_MODEL_KEY, board->model()); k->setAutoDetected(false); @@ -523,15 +524,15 @@ static void setKitEnvironment(ProjectExplorer::Kit *k, const BoardOptions* board EnvironmentKitAspect::setEnvironmentChanges(k, changes); } -static void setKitCMakeOptions(ProjectExplorer::Kit *k, const BoardOptions* board) +static void setKitCMakeOptions(ProjectExplorer::Kit *k, const BoardOptions* board, + const QString &qulDir) { using namespace CMakeProjectManager; CMakeConfig config = CMakeConfigurationKitAspect::configuration(k); if (!board->toolChainFile().isEmpty()) config.append(CMakeConfigItem("CMAKE_TOOLCHAIN_FILE", - ("%{CurrentBuild:Env:Qul_DIR}/" + - board->toolChainFile()).toUtf8())); + (qulDir + "/" + board->toolChainFile()).toUtf8())); if (!board->qulPlatform().isEmpty()) config.append(CMakeConfigItem("QUL_PLATFORM", board->qulPlatform().toUtf8())); @@ -560,17 +561,18 @@ ProjectExplorer::Kit *McuSupportOptions::kit(const BoardOptions* board) }); if (!kit) { const QString armGccPath = toolchainPackage->path(); - const auto init = [this, board, &armGccPath](Kit *k) { + const QString qulDir = qulSdkPackage->path(); + const auto init = [this, board](Kit *k) { KitGuard kitGuard(k); - setKitProperties(this, k, board); + setKitProperties(kitName(board), k, board); if (!isDesktop(board)) { - setKitToolchains(k, armGccPath); - setKitDebugger(k, armGccPath); + setKitToolchains(k, toolchainPackage->path()); + setKitDebugger(k, toolchainPackage->path()); setKitDevice(k); } setKitEnvironment(k, board); - setKitCMakeOptions(k, board); + setKitCMakeOptions(k, board, qulSdkPackage->path()); k->setup(); k->fix(); diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h index 57281b274bb..c5d64171a9e 100644 --- a/src/plugins/mcusupport/mcusupportoptions.h +++ b/src/plugins/mcusupport/mcusupportoptions.h @@ -131,6 +131,7 @@ public: QVector packages; QVector boards; PackageOptions *toolchainPackage = nullptr; + PackageOptions *qulSdkPackage = nullptr; QString kitName(const BoardOptions* board) const; diff --git a/src/plugins/mcusupport/mcusupportoptionspage.cpp b/src/plugins/mcusupport/mcusupportoptionspage.cpp index 62024e376bd..3ddf08fd2ab 100644 --- a/src/plugins/mcusupport/mcusupportoptionspage.cpp +++ b/src/plugins/mcusupport/mcusupportoptionspage.cpp @@ -160,6 +160,7 @@ void McuSupportOptionsPage::apply() package->writeToSettings(); QTC_ASSERT(m_options->toolchainPackage, return); + QTC_ASSERT(m_options->qulSdkPackage, return); const QVector validBoards = m_options->validBoards();