forked from qt-creator/qt-creator
ProjectExplorer: Do not ignore user-supplied mkspec
If the user explicitly sets the mkspec for a kit, we should remember that, even if it happens to be the (current) default mkspec of the kit. Fixes: QTCREATORBUG-16205 Change-Id: I9ee047bdaecce1aae7d0a8e4dfc2a0a25b6be744 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -72,7 +72,8 @@ private:
|
|||||||
void mkspecWasChanged(const QString &text)
|
void mkspecWasChanged(const QString &text)
|
||||||
{
|
{
|
||||||
m_ignoreChange = true;
|
m_ignoreChange = true;
|
||||||
QmakeKitAspect::setMkspec(m_kit, Utils::FileName::fromString(text));
|
QmakeKitAspect::setMkspec(m_kit, Utils::FileName::fromString(text),
|
||||||
|
QmakeKitAspect::MkspecSource::User);
|
||||||
m_ignoreChange = false;
|
m_ignoreChange = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,10 +192,11 @@ FileName QmakeKitAspect::effectiveMkspec(const Kit *k)
|
|||||||
return spec;
|
return spec;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmakeKitAspect::setMkspec(Kit *k, const FileName &fn)
|
void QmakeKitAspect::setMkspec(Kit *k, const FileName &fn, MkspecSource source)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(k, return);
|
QTC_ASSERT(k, return);
|
||||||
k->setValue(QmakeKitAspect::id(), fn == defaultMkspec(k) ? QString() : fn.toString());
|
k->setValue(QmakeKitAspect::id(), source == MkspecSource::Code && fn == defaultMkspec(k)
|
||||||
|
? QString() : fn.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
FileName QmakeKitAspect::defaultMkspec(const Kit *k)
|
FileName QmakeKitAspect::defaultMkspec(const Kit *k)
|
||||||
|
@@ -47,7 +47,8 @@ public:
|
|||||||
void addToMacroExpander(ProjectExplorer::Kit *kit, Utils::MacroExpander *expander) const override;
|
void addToMacroExpander(ProjectExplorer::Kit *kit, Utils::MacroExpander *expander) const override;
|
||||||
|
|
||||||
static Core::Id id();
|
static Core::Id id();
|
||||||
static void setMkspec(ProjectExplorer::Kit *k, const Utils::FileName &fn);
|
enum class MkspecSource { User, Code };
|
||||||
|
static void setMkspec(ProjectExplorer::Kit *k, const Utils::FileName &fn, MkspecSource source);
|
||||||
static Utils::FileName mkspec(const ProjectExplorer::Kit *k);
|
static Utils::FileName mkspec(const ProjectExplorer::Kit *k);
|
||||||
static Utils::FileName effectiveMkspec(const ProjectExplorer::Kit *k);
|
static Utils::FileName effectiveMkspec(const ProjectExplorer::Kit *k);
|
||||||
static Utils::FileName defaultMkspec(const ProjectExplorer::Kit *k);
|
static Utils::FileName defaultMkspec(const ProjectExplorer::Kit *k);
|
||||||
|
@@ -302,7 +302,7 @@ Kit *QmakeProjectImporter::createTemporaryKit(const QtProjectImporter::QtVersion
|
|||||||
for (ToolChain * const tc : preferredToolChains(data.qt, parsedSpec, archConfig))
|
for (ToolChain * const tc : preferredToolChains(data.qt, parsedSpec, archConfig))
|
||||||
ToolChainKitAspect::setToolChain(k, tc);
|
ToolChainKitAspect::setToolChain(k, tc);
|
||||||
if (parsedSpec != data.qt->mkspec())
|
if (parsedSpec != data.qt->mkspec())
|
||||||
QmakeKitAspect::setMkspec(k, parsedSpec);
|
QmakeKitAspect::setMkspec(k, parsedSpec, QmakeKitAspect::MkspecSource::Code);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user