diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2019-06-20 14:03:40 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2019-06-20 14:41:04 +0000 |
commit | 5bcd59c94f75e1dfbc64827328e110d0071364c4 (patch) | |
tree | af3e16d6b8050b2b72a3c6427ba95a1b0f3c1b62 /src | |
parent | add60c014871bdae0a038398695425a347b44952 (diff) | |
download | qt-creator-5bcd59c94f75e1dfbc64827328e110d0071364c4.tar.gz |
CMake: Simplify buildkey generation
Just use the target name as buildkey. This is unique in cmake projects, so
there is no need to mangle the source directory into the whole thing.
This is a problem since different readers might report different source
directories. That will then result in RunConfigurations getting duplicated
after switching the reader types.
Task-number: QTCREATORBUG-22129
Change-Id: I849ab68f221d732341e98faa9a4e757d3a495b2a
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src')
8 files changed, 7 insertions, 14 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index f7cfa7f33f..20970036c3 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -206,7 +206,7 @@ const QList<BuildTargetInfo> CMakeBuildConfiguration::appTargets() const bti.targetFilePath = ct.executable; bti.projectFilePath = ct.sourceDirectory.stringAppended("/"); bti.workingDirectory = ct.workingDirectory; - bti.buildKey = CMakeTargetNode::generateId(ct.sourceDirectory, ct.title); + bti.buildKey = ct.title; appTargetList.append(bti); } } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 08039b7229..2e7d160053 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -361,7 +361,7 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) setDisplayName(rootProjectNode()->displayName()); for (const CMakeBuildTarget &bt : bc->buildTargets()) { - const QString buildKey = CMakeTargetNode::generateId(bt.sourceDirectory, bt.title); + const QString buildKey = bt.title; if (ProjectNode *node = findNodeForBuildKey(buildKey)) { if (auto targetNode = dynamic_cast<CMakeTargetNode *>(node)) targetNode->setConfig(patchedConfig); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp index ea218c2257..aeee344aea 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp @@ -177,11 +177,6 @@ CMakeTargetNode::CMakeTargetNode(const Utils::FilePath &directory, const QString setIsProduct(); } -QString CMakeTargetNode::generateId(const Utils::FilePath &directory, const QString &target) -{ - return directory.toString() + "///::///" + target; -} - QString CMakeTargetNode::tooltip() const { return m_tooltip; @@ -189,7 +184,7 @@ QString CMakeTargetNode::tooltip() const QString CMakeTargetNode::buildKey() const { - return generateId(filePath(), m_target); + return m_target; } Utils::FilePath CMakeTargetNode::buildDirectory() const diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h index b924ec62a8..f4cea98db4 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h @@ -63,8 +63,6 @@ class CMakeTargetNode : public ProjectExplorer::ProjectNode public: CMakeTargetNode(const Utils::FilePath &directory, const QString &target); - static QString generateId(const Utils::FilePath &directory, const QString &target); - void setTargetInformation(const QList<Utils::FilePath> &artifacts, const QString &type); QString tooltip() const final; diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index 0e5b0d25f6..2b38abbee7 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -237,7 +237,7 @@ CppTools::RawProjectParts generateRawProjectParts(const PreprocessedData &input, ++counter; CppTools::RawProjectPart rpp; rpp.setProjectFileLocation(t.sourceDir.pathAppended("CMakeLists.txt").toString()); - rpp.setBuildSystemTarget(CMakeTargetNode::generateId(t.sourceDir, t.name)); + rpp.setBuildSystemTarget(t.name); rpp.setDisplayName(t.id); rpp.setMacros(transform<QVector>(ci.defines, &DefineInfo::define)); rpp.setHeaderPaths(transform<QVector>(ci.includes, &IncludeInfo::path)); diff --git a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp index 58b2f744e8..ab9c49acdf 100644 --- a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp +++ b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp @@ -160,7 +160,7 @@ CMakeTargetNode *createTargetNode(const QHash<Utils::FilePath, ProjectNode *> &c ProjectNode *cmln = cmakeListsNodes.value(dir); QTC_ASSERT(cmln, return nullptr); - QString targetId = CMakeTargetNode::generateId(dir, displayName); + QString targetId = displayName; CMakeTargetNode *tn = static_cast<CMakeTargetNode *>( cmln->findNode([&targetId](const Node *n) { return n->buildKey() == targetId; })); diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index 6b993ecdbb..86f463b67b 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -311,7 +311,7 @@ CppTools::RawProjectParts ServerModeReader::createRawProjectParts(QString &error CppTools::RawProjectPart rpp; rpp.setProjectFileLocation(fg->target->sourceDirectory.toString() + "/CMakeLists.txt"); - rpp.setBuildSystemTarget(CMakeTargetNode::generateId(fg->target->sourceDirectory, fg->target->name)); + rpp.setBuildSystemTarget(fg->target->name); rpp.setDisplayName(fg->target->name + QString::number(counter)); rpp.setMacros(fg->macros); rpp.setIncludePaths(includes); diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index 264f97dace..fb941604dd 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -349,7 +349,7 @@ CppTools::RawProjectParts TeaLeafReader::createRawProjectParts(QString &errorMes includePaths += m_parameters.workDirectory.toString(); CppTools::RawProjectPart rpp; rpp.setProjectFileLocation(cbt.sourceDirectory.toString() + "/CMakeLists.txt"); - rpp.setBuildSystemTarget(CMakeTargetNode::generateId(cbt.sourceDirectory, cbt.title)); + rpp.setBuildSystemTarget(cbt.title); rpp.setIncludePaths(includePaths); CppTools::RawProjectPartFlags cProjectFlags; |