forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.4'
Conflicts: src/tools/clangbackend/ipcsource/clangiasyncjob.cpp src/tools/clangbackend/ipcsource/clangjobrequest.cpp src/tools/clangbackend/ipcsource/clangjobrequest.h Change-Id: Ib8602530663813ade418f995dfd2a736908cfe75
This commit is contained in:
@@ -37,18 +37,16 @@ using namespace CMakeProjectManager;
|
||||
using namespace CMakeProjectManager::Internal;
|
||||
|
||||
CMakeInputsNode::CMakeInputsNode(const Utils::FileName &cmakeLists) :
|
||||
ProjectExplorer::ProjectNode(CMakeInputsNode::inputsPathFromCMakeListsPath(cmakeLists))
|
||||
ProjectExplorer::ProjectNode(cmakeLists, generateId(cmakeLists))
|
||||
{
|
||||
setPriority(Node::DefaultPriority - 10); // Bottom most!
|
||||
setDisplayName(QCoreApplication::translate("CMakeFilesProjectNode", "CMake Modules"));
|
||||
setIcon(QIcon(":/projectexplorer/images/session.png")); // TODO: Use a better icon!
|
||||
}
|
||||
|
||||
Utils::FileName CMakeInputsNode::inputsPathFromCMakeListsPath(const Utils::FileName &cmakeLists)
|
||||
QByteArray CMakeInputsNode::generateId(const Utils::FileName &inputFile)
|
||||
{
|
||||
Utils::FileName result = cmakeLists;
|
||||
result.appendPath("cmakeInputs"); // cmakeLists is a file, so this can not exist on disk
|
||||
return result;
|
||||
return inputFile.toString().toUtf8() + "/cmakeInputs";
|
||||
}
|
||||
|
||||
bool CMakeInputsNode::showInSimpleTree() const
|
||||
@@ -91,13 +89,18 @@ QString CMakeProjectNode::tooltip() const
|
||||
return QString();
|
||||
}
|
||||
|
||||
CMakeTargetNode::CMakeTargetNode(const Utils::FileName &directory) :
|
||||
ProjectExplorer::ProjectNode(directory)
|
||||
CMakeTargetNode::CMakeTargetNode(const Utils::FileName &directory, const QString &target) :
|
||||
ProjectExplorer::ProjectNode(directory, generateId(directory, target))
|
||||
{
|
||||
setPriority(Node::DefaultProjectPriority + 900);
|
||||
setIcon(QIcon(":/projectexplorer/images/build.png")); // TODO: Use proper icon!
|
||||
}
|
||||
|
||||
QByteArray CMakeTargetNode::generateId(const Utils::FileName &directory, const QString &target)
|
||||
{
|
||||
return directory.toString().toUtf8() + "///::///" + target.toUtf8();
|
||||
}
|
||||
|
||||
bool CMakeTargetNode::showInSimpleTree() const
|
||||
{
|
||||
return true;
|
||||
|
||||
@@ -35,7 +35,7 @@ class CMakeInputsNode : public ProjectExplorer::ProjectNode
|
||||
public:
|
||||
CMakeInputsNode(const Utils::FileName &cmakeLists);
|
||||
|
||||
static Utils::FileName inputsPathFromCMakeListsPath(const Utils::FileName &cmakeLists);
|
||||
static QByteArray generateId(const Utils::FileName &inputFile);
|
||||
|
||||
bool showInSimpleTree() const final;
|
||||
};
|
||||
@@ -60,7 +60,9 @@ public:
|
||||
class CMakeTargetNode : public ProjectExplorer::ProjectNode
|
||||
{
|
||||
public:
|
||||
CMakeTargetNode(const Utils::FileName &directory);
|
||||
CMakeTargetNode(const Utils::FileName &directory, const QString &target);
|
||||
|
||||
static QByteArray generateId(const Utils::FileName &directory, const QString &target);
|
||||
|
||||
void setTargetInformation(const QList<Utils::FileName> &artifacts, const QString &type);
|
||||
|
||||
|
||||
@@ -250,9 +250,12 @@ static void addCMakeVFolder(FolderNode *base, const Utils::FileName &basePath, i
|
||||
{
|
||||
if (files.isEmpty())
|
||||
return;
|
||||
auto folder = new VirtualFolderNode(basePath, priority);
|
||||
folder->setDisplayName(displayName);
|
||||
base->addNode(folder);
|
||||
FolderNode *folder = base;
|
||||
if (!displayName.isEmpty()) {
|
||||
folder = new VirtualFolderNode(basePath, priority);
|
||||
folder->setDisplayName(displayName);
|
||||
base->addNode(folder);
|
||||
}
|
||||
folder->addNestedNodes(files);
|
||||
for (FolderNode *fn : folder->folderNodes())
|
||||
fn->compress();
|
||||
@@ -268,9 +271,7 @@ static void addCMakeInputs(FolderNode *root,
|
||||
ProjectNode *cmakeVFolder = new CMakeInputsNode(root->filePath());
|
||||
root->addNode(cmakeVFolder);
|
||||
|
||||
addCMakeVFolder(cmakeVFolder, sourceDir, 1000,
|
||||
QCoreApplication::translate("CMakeProjectManager::Internal::ServerModeReader", "<Source Directory>"),
|
||||
sourceInputs);
|
||||
addCMakeVFolder(cmakeVFolder, sourceDir, 1000, QString(), sourceInputs);
|
||||
addCMakeVFolder(cmakeVFolder, buildDir, 100,
|
||||
QCoreApplication::translate("CMakeProjectManager::Internal::ServerModeReader", "<Build Directory>"),
|
||||
buildInputs);
|
||||
@@ -336,7 +337,7 @@ void ServerModeReader::updateCodeModel(CppTools::RawProjectParts &rpps)
|
||||
|
||||
CppTools::RawProjectPart rpp;
|
||||
rpp.setProjectFileLocation(fg->target->sourceDirectory.toString() + "/CMakeLists.txt");
|
||||
rpp.setBuildSystemTarget(fg->target->name + '|' + rpp.projectFile);
|
||||
rpp.setBuildSystemTarget(fg->target->name);
|
||||
rpp.setDisplayName(fg->target->name + QString::number(counter));
|
||||
rpp.setDefines(defineArg.toUtf8());
|
||||
rpp.setIncludePaths(includes);
|
||||
@@ -757,12 +758,13 @@ static CMakeTargetNode *createTargetNode(const QHash<Utils::FileName, ProjectNod
|
||||
ProjectNode *cmln = cmakeListsNodes.value(dir);
|
||||
QTC_ASSERT(cmln, return nullptr);
|
||||
|
||||
Utils::FileName targetName = dir;
|
||||
targetName.appendPath(".target::" + displayName);
|
||||
QByteArray targetId = CMakeTargetNode::generateId(dir, displayName);
|
||||
|
||||
CMakeTargetNode *tn = static_cast<CMakeTargetNode *>(cmln->projectNode(targetName));
|
||||
CMakeTargetNode *tn = static_cast<CMakeTargetNode *>(cmln->findNode([&targetId](const Node *n) {
|
||||
return n->id() == targetId;
|
||||
}));
|
||||
if (!tn) {
|
||||
tn = new CMakeTargetNode(targetName);
|
||||
tn = new CMakeTargetNode(dir, displayName);
|
||||
cmln->addNode(tn);
|
||||
}
|
||||
tn->setDisplayName(displayName);
|
||||
@@ -849,7 +851,7 @@ void ServerModeReader::addFileGroups(ProjectNode *targetRoot,
|
||||
otherFileNodes.append(fn);
|
||||
}
|
||||
|
||||
addCMakeVFolder(targetRoot, sourceDirectory, 1000, tr("<Source Directory>"), sourceFileNodes);
|
||||
addCMakeVFolder(targetRoot, sourceDirectory, 1000, QString(), sourceFileNodes);
|
||||
addCMakeVFolder(targetRoot, buildDirectory, 100, tr("<Build Directory>"), buildFileNodes);
|
||||
addCMakeVFolder(targetRoot, Utils::FileName(), 10, tr("<Other Locations>"), otherFileNodes);
|
||||
}
|
||||
|
||||
@@ -373,7 +373,7 @@ void TeaLeafReader::updateCodeModel(CppTools::RawProjectParts &rpps)
|
||||
includePaths += m_parameters.buildDirectory.toString();
|
||||
CppTools::RawProjectPart rpp;
|
||||
rpp.setProjectFileLocation(cbt.sourceDirectory.toString() + "/CMakeLists.txt");
|
||||
rpp.setBuildSystemTarget(cbt.title + '|' + rpp.projectFile);
|
||||
rpp.setBuildSystemTarget(cbt.title);
|
||||
rpp.setIncludePaths(includePaths);
|
||||
|
||||
CppTools::RawProjectPartFlags cProjectFlags;
|
||||
|
||||
Reference in New Issue
Block a user