diff --git a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp index 41810655c3a..7909de1981e 100644 --- a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp +++ b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp @@ -218,8 +218,7 @@ QString QbsProfileManager::profileNameForKit(const ProjectExplorer::Kit *kit) QString QbsProfileManager::runQbsConfig(QbsConfigOp op, const QString &key, const QVariant &value) { - Utils::QtcProcess qbsConfig; - QStringList args("config"); + QStringList args; if (QbsSettings::useCreatorSettingsDirForQbs()) args << "--settings-dir" << QbsSettings::qbsSettingsBaseDir(); switch (op) { @@ -242,10 +241,11 @@ QString QbsProfileManager::runQbsConfig(QbsConfigOp op, const QString &key, cons break; } } - const Utils::FilePath qbsExe = QbsSettings::qbsExecutableFilePath(); - if (qbsExe.isEmpty() || !qbsExe.exists()) + const Utils::FilePath qbsConfigExe = QbsSettings::qbsConfigFilePath(); + if (qbsConfigExe.isEmpty() || !qbsConfigExe.exists()) return {}; - qbsConfig.setCommand({qbsExe, args}); + Utils::QtcProcess qbsConfig; + qbsConfig.setCommand({qbsConfigExe, args}); qbsConfig.start(); if (!qbsConfig.waitForStarted(3000) || !qbsConfig.waitForFinished(5000)) { Core::MessageManager::writeFlashing( diff --git a/src/plugins/qbsprojectmanager/qbssettings.cpp b/src/plugins/qbsprojectmanager/qbssettings.cpp index 010fad3f73e..55619f73f28 100644 --- a/src/plugins/qbsprojectmanager/qbssettings.cpp +++ b/src/plugins/qbsprojectmanager/qbssettings.cpp @@ -87,6 +87,18 @@ FilePath QbsSettings::qbsExecutableFilePath() return candidate; } +FilePath QbsSettings::qbsConfigFilePath() +{ + const FilePath qbsExe = qbsExecutableFilePath(); + if (!qbsExe.isExecutableFile()) + return {}; + const FilePath qbsConfig = qbsExe.absolutePath().pathAppended("qbs-config") + .withExecutableSuffix(); + if (!qbsConfig.isExecutableFile()) + return {}; + return qbsConfig; +} + QString QbsSettings::defaultInstallDirTemplate() { return instance().m_settings.defaultInstallDirTemplate; diff --git a/src/plugins/qbsprojectmanager/qbssettings.h b/src/plugins/qbsprojectmanager/qbssettings.h index fef663e2063..dd908029e62 100644 --- a/src/plugins/qbsprojectmanager/qbssettings.h +++ b/src/plugins/qbsprojectmanager/qbssettings.h @@ -50,6 +50,7 @@ public: static QbsSettings &instance(); static Utils::FilePath qbsExecutableFilePath(); + static Utils::FilePath qbsConfigFilePath(); static bool hasQbsExecutable(); static QString defaultInstallDirTemplate(); static bool useCreatorSettingsDirForQbs();