Merge remote-tracking branch 'origin/4.15'

Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp

Change-Id: I403b236c40d73a61ae22304e289e9d4374366395
This commit is contained in:
Eike Ziller
2021-04-06 15:17:40 +02:00
221 changed files with 4167 additions and 3192 deletions

View File

@@ -891,6 +891,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
const Kit *k = target->kit();
QStringList initialArgs = defaultInitialCMakeArguments(k, info.typeName);
setIsMultiConfig(CMakeGeneratorKitAspect::isMultiConfigGenerator(k));
// Android magic:
if (DeviceTypeKitAspect::deviceTypeId(k) == Android::Constants::ANDROID_DEVICE_TYPE) {
@@ -1335,7 +1336,7 @@ QString CMakeBuildConfiguration::cmakeBuildType() const
config = CMakeConfigItem::itemsFromArguments(initialCMakeArguments());
}
if (!config.isEmpty()) {
if (!config.isEmpty() && !isMultiConfig()) {
cmakeBuildType = QString::fromUtf8(CMakeConfigItem::valueOf("CMAKE_BUILD_TYPE", config));
const_cast<CMakeBuildConfiguration*>(this)
->setCMakeBuildType(cmakeBuildType);
@@ -1356,7 +1357,12 @@ void CMakeBuildConfiguration::setCMakeBuildType(const QString &cmakeBuildType, b
bool CMakeBuildConfiguration::isMultiConfig() const
{
return m_buildSystem->isMultiConfig();
return m_isMultiConfig;
}
void CMakeBuildConfiguration::setIsMultiConfig(bool isMultiConfig)
{
m_isMultiConfig = isMultiConfig;
}
namespace Internal {

View File

@@ -78,6 +78,7 @@ public:
void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false);
bool isMultiConfig() const;
void setIsMultiConfig(bool isMultiConfig);
signals:
void errorOccurred(const QString &message);
@@ -115,6 +116,7 @@ private:
Internal::CMakeBuildSystem *m_buildSystem = nullptr;
QStringList m_extraCMakeArguments;
bool m_isMultiConfig = false;
friend class Internal::CMakeBuildSettingsWidget;
friend class Internal::CMakeBuildSystem;

View File

@@ -530,8 +530,6 @@ void CMakeBuildStep::recreateBuildTargetsModel()
if (idx != -1)
m_buildTargets[idx] = QString("INSTALL");
}
targetList.sort();
targetList.removeDuplicates();
addItem(QString(), true);

View File

@@ -78,26 +78,31 @@ using namespace Utils;
namespace CMakeProjectManager {
namespace Internal {
static void copySourcePathToClipboard(Utils::optional<QString> srcPath, const ProjectNode *node)
static void copySourcePathsToClipboard(QStringList srcPaths, const ProjectNode *node)
{
QClipboard *clip = QGuiApplication::clipboard();
QDir projDir{node->filePath().toFileInfo().absoluteFilePath()};
clip->setText(QDir::cleanPath(projDir.relativeFilePath(srcPath.value())));
QString data = Utils::transform(srcPaths, [projDir](const QString &path) {
return QDir::cleanPath(projDir.relativeFilePath(path));
}).join(" ");
clip->setText(data);
}
static void noAutoAdditionNotify(const QStringList &filePaths, const ProjectNode *node)
{
Utils::optional<QString> srcPath{};
const QStringList srcPaths = Utils::filtered(filePaths, [](const QString& file) {
const auto mimeType = Utils::mimeTypeForFile(file).name();
return mimeType == CppTools::Constants::C_SOURCE_MIMETYPE ||
mimeType == CppTools::Constants::C_HEADER_MIMETYPE ||
mimeType == CppTools::Constants::CPP_SOURCE_MIMETYPE ||
mimeType == CppTools::Constants::CPP_HEADER_MIMETYPE ||
mimeType == ProjectExplorer::Constants::FORM_MIMETYPE ||
mimeType == ProjectExplorer::Constants::RESOURCE_MIMETYPE ||
mimeType == ProjectExplorer::Constants::SCXML_MIMETYPE;
});
for (const QString &file : filePaths) {
if (Utils::mimeTypeForFile(file).name() == CppTools::Constants::CPP_SOURCE_MIMETYPE) {
srcPath = file;
break;
}
}
if (srcPath) {
if (!srcPaths.empty()) {
CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings();
switch (settings->afterAddFileSetting.value()) {
case AskUser: {
@@ -122,13 +127,13 @@ static void noAutoAdditionNotify(const QStringList &filePaths, const ProjectNode
}
if (QDialogButtonBox::Yes == reply)
copySourcePathToClipboard(srcPath, node);
copySourcePathsToClipboard(srcPaths, node);
break;
}
case CopyFilePath: {
copySourcePathToClipboard(srcPath, node);
copySourcePathsToClipboard(srcPaths, node);
break;
}
@@ -1063,7 +1068,11 @@ const QList<BuildTargetInfo> CMakeBuildSystem::appTargets() const
QStringList CMakeBuildSystem::buildTargetTitles() const
{
return transform(m_buildTargets, &CMakeBuildTarget::title);
auto nonUtilityTargets = filtered(m_buildTargets, [this](const CMakeBuildTarget &target){
return target.targetType != UtilityType ||
CMakeBuildStep::specialTargets(usesAllCapsTargets()).contains(target.title);
});
return transform(nonUtilityTargets, &CMakeBuildTarget::title);
}
const QList<CMakeBuildTarget> &CMakeBuildSystem::buildTargets() const