forked from qt-creator/qt-creator
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:
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -530,8 +530,6 @@ void CMakeBuildStep::recreateBuildTargetsModel()
|
||||
if (idx != -1)
|
||||
m_buildTargets[idx] = QString("INSTALL");
|
||||
}
|
||||
|
||||
targetList.sort();
|
||||
targetList.removeDuplicates();
|
||||
|
||||
addItem(QString(), true);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user