forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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));
|
||||
|
@@ -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; }));
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user