forked from qt-creator/qt-creator
ProjectExplorer: Do not prepend compiler path to PATH everywhere!
Do not unconditionally prepend the (c++) compiler path to PATH for all projects using GCC-derived toolchains. Prepend the compiler path in the Qmake- and GenericBuildConfigurations instead. Also change the order: Apply buildconfiguration's addToEnvironment first, only then apply the kit's addToEnvironment. This does change a few things: * CMake and Qbs will now get the normal PATH * MSVC compilers will have their compiler path prepended to PATH by the effected BuildConfigurations. This should be harmless, since that happens before the environment setup script is appended. Task-number: QTCREATORBUG-18714 Change-Id: I548182bc447d80d24f4de4ce7cf12ee1a753ed26 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -196,6 +196,11 @@ BuildConfiguration::BuildType GenericBuildConfiguration::buildType() const
|
|||||||
return Unknown;
|
return Unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GenericBuildConfiguration::addToEnvironment(Utils::Environment &env) const
|
||||||
|
{
|
||||||
|
prependCompilerPathToEnvironment(env);
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
// GenericBuildSettingsWidget
|
// GenericBuildSettingsWidget
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ public:
|
|||||||
|
|
||||||
BuildType buildType() const override;
|
BuildType buildType() const override;
|
||||||
|
|
||||||
|
void addToEnvironment(Utils::Environment &env) const final;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
GenericBuildConfiguration(ProjectExplorer::Target *parent, GenericBuildConfiguration *source);
|
GenericBuildConfiguration(ProjectExplorer::Target *parent, GenericBuildConfiguration *source);
|
||||||
GenericBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
|
GenericBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
|
||||||
|
|||||||
@@ -33,7 +33,10 @@
|
|||||||
#include "kit.h"
|
#include "kit.h"
|
||||||
|
|
||||||
#include <projectexplorer/buildenvironmentwidget.h>
|
#include <projectexplorer/buildenvironmentwidget.h>
|
||||||
|
#include <projectexplorer/kitinformation.h>
|
||||||
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
#include <projectexplorer/projectmacroexpander.h>
|
#include <projectexplorer/projectmacroexpander.h>
|
||||||
|
#include <projectexplorer/target.h>
|
||||||
#include <extensionsystem/pluginmanager.h>
|
#include <extensionsystem/pluginmanager.h>
|
||||||
#include <coreplugin/idocument.h>
|
#include <coreplugin/idocument.h>
|
||||||
|
|
||||||
@@ -238,8 +241,8 @@ Utils::Environment BuildConfiguration::baseEnvironment() const
|
|||||||
Utils::Environment result;
|
Utils::Environment result;
|
||||||
if (useSystemEnvironment())
|
if (useSystemEnvironment())
|
||||||
result = Utils::Environment::systemEnvironment();
|
result = Utils::Environment::systemEnvironment();
|
||||||
target()->kit()->addToEnvironment(result);
|
|
||||||
addToEnvironment(result);
|
addToEnvironment(result);
|
||||||
|
target()->kit()->addToEnvironment(result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,6 +333,25 @@ bool BuildConfiguration::isActive() const
|
|||||||
return target()->isActive() && target()->activeBuildConfiguration() == this;
|
return target()->isActive() && target()->activeBuildConfiguration() == this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Helper function that prepends the directory containing the C++ toolchain to
|
||||||
|
* PATH. This is used to in build configurations targeting broken build systems
|
||||||
|
* to provide hints about which compiler to use.
|
||||||
|
*/
|
||||||
|
void BuildConfiguration::prependCompilerPathToEnvironment(Utils::Environment &env) const
|
||||||
|
{
|
||||||
|
const ToolChain *tc
|
||||||
|
= ToolChainKitInformation::toolChain(target()->kit(),
|
||||||
|
ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
||||||
|
|
||||||
|
if (!tc)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const Utils::FileName compilerDir = tc->compilerCommand().parentDir();
|
||||||
|
if (!compilerDir.isEmpty())
|
||||||
|
env.prependOrSetPath(compilerDir.toString());
|
||||||
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
// IBuildConfigurationFactory
|
// IBuildConfigurationFactory
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -90,6 +90,8 @@ public:
|
|||||||
|
|
||||||
bool isActive() const override;
|
bool isActive() const override;
|
||||||
|
|
||||||
|
void prependCompilerPathToEnvironment(Utils::Environment &env) const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void environmentChanged();
|
void environmentChanged();
|
||||||
void buildDirectoryChanged();
|
void buildDirectoryChanged();
|
||||||
|
|||||||
@@ -718,7 +718,7 @@ GccToolChain::GccToolChain(const GccToolChain &) = default;
|
|||||||
|
|
||||||
void GccToolChain::addToEnvironment(Environment &env) const
|
void GccToolChain::addToEnvironment(Environment &env) const
|
||||||
{
|
{
|
||||||
addCommandPathToEnvironment(m_compilerCommand, env);
|
Q_UNUSED(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
FileNameList GccToolChain::suggestedMkspecList() const
|
FileNameList GccToolChain::suggestedMkspecList() const
|
||||||
|
|||||||
@@ -756,6 +756,11 @@ BuildConfiguration::BuildType QmakeBuildConfiguration::buildType() const
|
|||||||
return Release;
|
return Release;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QmakeBuildConfiguration::addToEnvironment(Environment &env) const
|
||||||
|
{
|
||||||
|
prependCompilerPathToEnvironment(env);
|
||||||
|
}
|
||||||
|
|
||||||
QmakeBuildConfiguration::LastKitState::LastKitState() { }
|
QmakeBuildConfiguration::LastKitState::LastKitState() { }
|
||||||
|
|
||||||
QmakeBuildConfiguration::LastKitState::LastKitState(Kit *k)
|
QmakeBuildConfiguration::LastKitState::LastKitState(Kit *k)
|
||||||
|
|||||||
@@ -99,6 +99,8 @@ public:
|
|||||||
|
|
||||||
BuildType buildType() const override;
|
BuildType buildType() const override;
|
||||||
|
|
||||||
|
void addToEnvironment(Utils::Environment &env) const override;
|
||||||
|
|
||||||
void emitProFileEvaluateNeeded();
|
void emitProFileEvaluateNeeded();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|||||||
Reference in New Issue
Block a user