forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/12.0'
Change-Id: I35cb28b759fb200c45a1496299584132336fcd1c
This commit is contained in:
@@ -773,6 +773,9 @@ void CMakeBuildStep::updateDeploymentData()
|
||||
|
||||
IDeviceConstPtr runDevice = DeviceKitAspect::device(buildSystem()->kit());
|
||||
|
||||
if (!runDevice)
|
||||
return;
|
||||
|
||||
const auto appFileNames = transform<QSet<QString>>(buildSystem()->applicationTargets(),
|
||||
[](const BuildTargetInfo &appTarget) { return appTarget.targetFilePath.fileName(); });
|
||||
|
||||
|
||||
@@ -1004,6 +1004,30 @@ void CMakeBuildSystem::updateProjectData()
|
||||
QtSupport::CppKitInfo kitInfo(kit());
|
||||
QTC_ASSERT(kitInfo.isValid(), return );
|
||||
|
||||
struct QtMajorToPkgNames
|
||||
{
|
||||
QtMajorVersion major = QtMajorVersion::None;
|
||||
QStringList pkgNames;
|
||||
};
|
||||
|
||||
auto qtVersionFromCMake = [this](const QList<QtMajorToPkgNames> &mapping) {
|
||||
for (const QtMajorToPkgNames &m : mapping) {
|
||||
for (const QString &pkgName : m.pkgNames) {
|
||||
auto qt = m_findPackagesFilesHash.value(pkgName);
|
||||
if (qt.hasValidTarget())
|
||||
return m.major;
|
||||
}
|
||||
}
|
||||
return QtMajorVersion::None;
|
||||
};
|
||||
|
||||
QtMajorVersion qtVersion = kitInfo.projectPartQtVersion;
|
||||
if (qtVersion == QtMajorVersion::None)
|
||||
qtVersion = qtVersionFromCMake({{QtMajorVersion::Qt6, {"Qt6", "Qt6Core"}},
|
||||
{QtMajorVersion::Qt5, {"Qt5", "Qt5Core"}},
|
||||
{QtMajorVersion::Qt4, {"Qt4", "Qt4Core"}}
|
||||
});
|
||||
|
||||
QString errorMessage;
|
||||
RawProjectParts rpps = m_reader.createRawProjectParts(errorMessage);
|
||||
if (!errorMessage.isEmpty())
|
||||
@@ -1011,8 +1035,7 @@ void CMakeBuildSystem::updateProjectData()
|
||||
qCDebug(cmakeBuildSystemLog) << "Raw project parts created." << errorMessage;
|
||||
|
||||
for (RawProjectPart &rpp : rpps) {
|
||||
rpp.setQtVersion(
|
||||
kitInfo.projectPartQtVersion); // TODO: Check if project actually uses Qt.
|
||||
rpp.setQtVersion(qtVersion); // TODO: Check if project actually uses Qt.
|
||||
const FilePath includeFileBaseDir = buildConfiguration()->buildDirectory();
|
||||
QStringList cxxFlags = rpp.flagsForCxx.commandLineFlags;
|
||||
QStringList cFlags = rpp.flagsForC.commandLineFlags;
|
||||
|
||||
@@ -116,8 +116,10 @@ static Environment getEnvCombined(const std::optional<Environment> &optPresetEnv
|
||||
Environment result = env;
|
||||
|
||||
if (optPresetEnv) {
|
||||
optPresetEnv->forEachEntry([&result](const QString &key, const QString &value, bool) {
|
||||
result.set(key, value);
|
||||
optPresetEnv->forEachEntry([&result](const QString &key, const QString &value,
|
||||
bool enabled) {
|
||||
if (enabled)
|
||||
result.set(key, value);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -128,7 +130,9 @@ template<class PresetType>
|
||||
void expand(const PresetType &preset, Environment &env, const FilePath &sourceDirectory)
|
||||
{
|
||||
const Environment presetEnv = getEnvCombined(preset.environment, env);
|
||||
presetEnv.forEachEntry([&](const QString &key, const QString &value_, bool) {
|
||||
presetEnv.forEachEntry([&](const QString &key, const QString &value_, bool enabled) {
|
||||
if (!enabled)
|
||||
return;
|
||||
QString value = value_;
|
||||
expandAllButEnv(preset, sourceDirectory, value);
|
||||
value = expandMacroEnv("env", value, [presetEnv](const QString ¯oName) {
|
||||
@@ -163,7 +167,9 @@ template<class PresetType>
|
||||
void expand(const PresetType &preset, EnvironmentItems &envItems, const FilePath &sourceDirectory)
|
||||
{
|
||||
const Environment presetEnv = preset.environment ? *preset.environment : Environment();
|
||||
presetEnv.forEachEntry([&](const QString &key, const QString &value_, bool) {
|
||||
presetEnv.forEachEntry([&](const QString &key, const QString &value_, bool enabled) {
|
||||
if (!enabled)
|
||||
return;
|
||||
QString value = value_;
|
||||
expandAllButEnv(preset, sourceDirectory, value);
|
||||
value = expandMacroEnv("env", value, [presetEnv](const QString ¯oName) {
|
||||
|
||||
Reference in New Issue
Block a user