forked from qt-creator/qt-creator
QmakeProjectManager: Add generated files to project tree
Now toggling the "Hide Generated Files" checkbox actually does something for qmake projects. Fixes: QTCREATORBUG-21467 Change-Id: Ifc4c8acd5bbb57ebb1f07af9d680d39e697cf113 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -143,11 +143,21 @@ static void createTree(const QmakePriFile *pri, QmakePriFileNode *node, const Fi
|
||||
|
||||
// other normal files:
|
||||
const QVector<QmakeStaticData::FileTypeData> &fileTypes = qmakeStaticData()->fileTypeData;
|
||||
FileNameList generatedFiles;
|
||||
const auto proFile = dynamic_cast<const QmakeProFile *>(pri);
|
||||
for (int i = 0; i < fileTypes.size(); ++i) {
|
||||
FileType type = fileTypes.at(i).type;
|
||||
const QSet<FileName> &newFilePaths = Utils::filtered(pri->files(type), [&toExclude](const Utils::FileName &fn) {
|
||||
return !Utils::contains(toExclude, [&fn](const Utils::FileName &ex) { return fn.isChildOf(ex); });
|
||||
});
|
||||
if (proFile) {
|
||||
for (const FileName &fp : newFilePaths) {
|
||||
for (const ExtraCompiler *ec : proFile->extraCompilers()) {
|
||||
if (ec->source() == fp)
|
||||
generatedFiles << ec->targets();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!newFilePaths.isEmpty()) {
|
||||
auto vfolder = std::make_unique<VirtualFolderNode>(pri->filePath().parentDir());
|
||||
@@ -192,6 +202,22 @@ static void createTree(const QmakePriFile *pri, QmakePriFileNode *node, const Fi
|
||||
}
|
||||
}
|
||||
|
||||
if (!generatedFiles.empty()) {
|
||||
QTC_CHECK(proFile);
|
||||
const FileName baseDir = generatedFiles.size() == 1 ? generatedFiles.first().parentDir()
|
||||
: proFile->buildDir();
|
||||
auto genFolder = std::make_unique<VirtualFolderNode>(baseDir);
|
||||
genFolder->setDisplayName(QCoreApplication::translate("QmakeProjectManager::QmakePriFile",
|
||||
"Generated Files"));
|
||||
genFolder->setIsGenerated(true);
|
||||
for (const FileName &fp : generatedFiles) {
|
||||
auto fileNode = std::make_unique<FileNode>(fp, FileNode::fileTypeForFileName(fp));
|
||||
fileNode->setIsGenerated(true);
|
||||
genFolder->addNestedNode(std::move(fileNode));
|
||||
}
|
||||
node->addNode(std::move(genFolder));
|
||||
}
|
||||
|
||||
// Virtual folders:
|
||||
for (QmakePriFile *c : pri->children()) {
|
||||
std::unique_ptr<QmakePriFileNode> newNode;
|
||||
|
Reference in New Issue
Block a user