forked from qt-creator/qt-creator
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 <alessandro.portale@qt.io>
This commit is contained in:
@@ -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();
|
||||
|
@@ -131,6 +131,7 @@ public:
|
||||
QVector<PackageOptions*> packages;
|
||||
QVector<BoardOptions*> boards;
|
||||
PackageOptions *toolchainPackage = nullptr;
|
||||
PackageOptions *qulSdkPackage = nullptr;
|
||||
|
||||
QString kitName(const BoardOptions* board) const;
|
||||
|
||||
|
@@ -160,6 +160,7 @@ void McuSupportOptionsPage::apply()
|
||||
package->writeToSettings();
|
||||
|
||||
QTC_ASSERT(m_options->toolchainPackage, return);
|
||||
QTC_ASSERT(m_options->qulSdkPackage, return);
|
||||
|
||||
const QVector<BoardOptions*> validBoards = m_options->validBoards();
|
||||
|
||||
|
Reference in New Issue
Block a user