summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2022-11-25 14:06:47 +0100
committerhjk <hjk@qt.io>2023-03-15 09:57:02 +0000
commit2704f8ff0bc6e92dd71eaf616ef04b4a6a0221ad (patch)
treee8b8f8ebb260294730568a8b53eaa40e061f8f22
parent4d325522e06b9a892c8bb70f47cb4a9ba13bbcc7 (diff)
downloadqt-creator-2704f8ff0bc6e92dd71eaf616ef04b4a6a0221ad.tar.gz
ProjectExplorer: Proliferate FilePath a bit
Change-Id: Ia671a1de17b9e58764375c5f64cc47b053b0725a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp3
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp2
-rw-r--r--src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp14
-rw-r--r--src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp4
-rw-r--r--src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp25
-rw-r--r--src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.h8
-rw-r--r--src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp2
-rw-r--r--src/plugins/genericprojectmanager/genericproject.cpp4
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.cpp2
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.h4
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp4
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.h4
-rw-r--r--src/plugins/projectexplorer/rawprojectpart.cpp6
-rw-r--r--src/plugins/projectexplorer/rawprojectpart.h2
-rw-r--r--src/plugins/projectexplorer/toolchain.cpp19
-rw-r--r--src/plugins/projectexplorer/toolchain.h10
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp2
17 files changed, 54 insertions, 61 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp
index 0375ce9ac6..113212be5f 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp
@@ -14,6 +14,7 @@
#include <utils/qtcassert.h>
using namespace ProjectExplorer;
+using namespace Utils;
namespace AutotoolsProjectManager::Internal {
@@ -140,7 +141,7 @@ void AutotoolsBuildSystem::updateCppCodeModel()
if (cxxflags.isEmpty())
cxxflags = cflags;
- const QString includeFileBaseDir = projectDirectory().toString();
+ const FilePath includeFileBaseDir = projectDirectory();
rpp.setFlagsForC({kitInfo.cToolChain, cflags, includeFileBaseDir});
rpp.setFlagsForCxx({kitInfo.cxxToolChain, cxxflags, includeFileBaseDir});
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
index 726414dafc..ebc41fea78 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
@@ -601,7 +601,7 @@ void CMakeBuildSystem::updateProjectData()
for (RawProjectPart &rpp : rpps) {
rpp.setQtVersion(
kitInfo.projectPartQtVersion); // TODO: Check if project actually uses Qt.
- const QString includeFileBaseDir = buildConfiguration()->buildDirectory().toString();
+ const FilePath includeFileBaseDir = buildConfiguration()->buildDirectory();
QStringList cxxFlags = rpp.flagsForCxx.commandLineFlags;
QStringList cFlags = rpp.flagsForC.commandLineFlags;
addTargetFlagForIos(cxxFlags, cFlags, this, [this] {
diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp
index 051552d16c..49712c3206 100644
--- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp
+++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp
@@ -148,8 +148,8 @@ void addDriverModeFlagIfNeeded(const ToolChain *toolchain,
RawProjectPart makeRawProjectPart(const Utils::FilePath &projectFile,
Kit *kit,
ProjectExplorer::KitInfo &kitInfo,
- const QString &workingDir,
- const Utils::FilePath &fileName,
+ const FilePath &workingDir,
+ const FilePath &filePath,
QStringList flags)
{
HeaderPaths headerPaths;
@@ -157,7 +157,7 @@ RawProjectPart makeRawProjectPart(const Utils::FilePath &projectFile,
CppEditor::ProjectFile::Kind fileKind = CppEditor::ProjectFile::Unclassified;
const QStringList originalFlags = flags;
- filteredFlags(fileName.fileName(),
+ filteredFlags(filePath,
workingDir,
flags,
headerPaths,
@@ -166,10 +166,12 @@ RawProjectPart makeRawProjectPart(const Utils::FilePath &projectFile,
kitInfo.sysRootPath);
RawProjectPart rpp;
+
rpp.setProjectFileLocation(projectFile.toString());
- rpp.setBuildSystemTarget(workingDir);
- rpp.setDisplayName(fileName.fileName());
- rpp.setFiles({fileName.toString()});
+ rpp.setBuildSystemTarget(workingDir.path());
+ rpp.setDisplayName(filePath.fileName());
+ rpp.setFiles({filePath.toFSPathString()});
+
rpp.setHeaderPaths(headerPaths);
rpp.setMacros(macros);
diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp
index 6fff494764..f8b2574771 100644
--- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp
+++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp
@@ -92,7 +92,9 @@ public:
QStringList getFilteredFlags()
{
- filteredFlags(fileName, workingDir, flags, headerPaths, macros, fileKind, sysRoot);
+ filteredFlags(FilePath::fromString(fileName),
+ FilePath::fromString(workingDir),
+ flags, headerPaths, macros, fileKind, sysRoot);
return flags;
}
diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
index df8e08a68f..f773d5fc5d 100644
--- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
+++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
@@ -22,15 +22,6 @@ using namespace Utils;
namespace CompilationDatabaseProjectManager {
namespace Internal {
-static QString updatedPathFlag(const QString &pathStr, const QString &workingDir)
-{
- QString result = pathStr;
- if (QDir(pathStr).isRelative())
- result = workingDir + "/" + pathStr;
-
- return result;
-}
-
static CppEditor::ProjectFile::Kind fileKindFromString(QString flag)
{
using namespace CppEditor;
@@ -86,13 +77,13 @@ QStringList filterFromFileName(const QStringList &flags, QString fileName)
return result;
}
-void filteredFlags(const QString &fileName,
- const QString &workingDir,
+void filteredFlags(const FilePath &filePath,
+ const FilePath &workingDir,
QStringList &flags,
HeaderPaths &headerPaths,
Macros &macros,
CppEditor::ProjectFile::Kind &fileKind,
- Utils::FilePath &sysRoot)
+ FilePath &sysRoot)
{
if (flags.empty())
return;
@@ -113,7 +104,7 @@ void filteredFlags(const QString &fileName,
}
if (includePathType) {
- const QString pathStr = updatedPathFlag(flag, workingDir);
+ const QString pathStr = workingDir.resolvePath(flag).toString();
headerPaths.append({pathStr, includePathType.value()});
includePathType.reset();
continue;
@@ -152,7 +143,7 @@ void filteredFlags(const QString &fileName,
return flag.startsWith(opt) && flag != opt;
});
if (!includeOpt.isEmpty()) {
- const QString pathStr = updatedPathFlag(flag.mid(includeOpt.length()), workingDir);
+ const QString pathStr = workingDir.resolvePath(flag.mid(includeOpt.length())).toString();
headerPaths.append({pathStr, userIncludeFlags.contains(includeOpt)
? HeaderPathType::User : HeaderPathType::System});
continue;
@@ -182,14 +173,14 @@ void filteredFlags(const QString &fileName,
if (flag.startsWith("--sysroot=")) {
if (sysRoot.isEmpty())
- sysRoot = FilePath::fromUserInput(updatedPathFlag(flag.mid(10), workingDir));
+ sysRoot = workingDir.resolvePath(flag.mid(10));
continue;
}
if ((flag.startsWith("-std=") || flag.startsWith("/std:"))
&& fileKind == CppEditor::ProjectFile::Unclassified) {
const bool cpp = (flag.contains("c++") || flag.contains("gnu++"));
- if (CppEditor::ProjectFile::isHeader(CppEditor::ProjectFile::classify(fileName)))
+ if (CppEditor::ProjectFile::isHeader(CppEditor::ProjectFile::classify(filePath.path())))
fileKind = cpp ? CppEditor::ProjectFile::CXXHeader : CppEditor::ProjectFile::CHeader;
else
fileKind = cpp ? CppEditor::ProjectFile::CXXSource : CppEditor::ProjectFile::CSource;
@@ -203,7 +194,7 @@ void filteredFlags(const QString &fileName,
}
if (fileKind == CppEditor::ProjectFile::Unclassified)
- fileKind = CppEditor::ProjectFile::classify(fileName);
+ fileKind = CppEditor::ProjectFile::classify(filePath.path());
flags = filtered;
}
diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.h b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.h
index 79130799b4..ec024443d8 100644
--- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.h
+++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.h
@@ -4,10 +4,8 @@
#pragma once
#include <cppeditor/cppprojectfile.h>
-#include <utils/filepath.h>
#include <QHash>
-#include <QStringList>
namespace ProjectExplorer {
class HeaderPath;
@@ -21,7 +19,7 @@ class DbEntry {
public:
QStringList flags;
Utils::FilePath fileName;
- QString workingDir;
+ Utils::FilePath workingDir;
};
class DbContents {
@@ -35,8 +33,8 @@ using MimeBinaryCache = QHash<QString, bool>;
QStringList filterFromFileName(const QStringList &flags, QString baseName);
-void filteredFlags(const QString &fileName,
- const QString &workingDir,
+void filteredFlags(const Utils::FilePath &filePath,
+ const Utils::FilePath &workingDir,
QStringList &flags,
QVector<ProjectExplorer::HeaderPath> &headerPaths,
QVector<ProjectExplorer::Macro> &macros,
diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp
index 830d51439f..7d6b399d91 100644
--- a/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp
+++ b/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp
@@ -182,7 +182,7 @@ std::vector<DbEntry> CompilationDbParser::readJsonObjects() const
const Utils::FilePath filePath = jsonObjectFilePath(object);
const QStringList flags = filterFromFileName(jsonObjectFlags(object, flagsCache),
filePath.fileName());
- result.push_back({flags, filePath, object["directory"].toString()});
+ result.push_back({flags, filePath, FilePath::fromUserInput(object["directory"].toString())});
objectStart = m_projectFileContents.indexOf('{', objectEnd + 1);
objectEnd = m_projectFileContents.indexOf('}', objectStart + 1);
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index c219b88b2e..5553e0a740 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -569,8 +569,8 @@ void GenericBuildSystem::refreshCppCodeModel()
rpp.setQtVersion(kitInfo.projectPartQtVersion);
rpp.setHeaderPaths(m_projectIncludePaths);
rpp.setConfigFileName(m_configFileName);
- rpp.setFlagsForCxx({nullptr, m_cxxflags, projectDirectory().toString()});
- rpp.setFlagsForC({nullptr, m_cflags, projectDirectory().toString()});
+ rpp.setFlagsForCxx({nullptr, m_cxxflags, projectDirectory()});
+ rpp.setFlagsForC({nullptr, m_cflags, projectDirectory()});
static const auto sourceFilesToStringList = [](const SourceFiles &sourceFiles) {
return Utils::transform(sourceFiles, [](const SourceFile &f) {
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index cac1905f11..f8e99c3244 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -569,7 +569,7 @@ WarningFlags GccToolChain::warningFlags(const QStringList &cflags) const
return flags;
}
-QStringList GccToolChain::includedFiles(const QStringList &flags, const QString &directoryPath) const
+FilePaths GccToolChain::includedFiles(const QStringList &flags, const FilePath &directoryPath) const
{
return ToolChain::includedFiles("-include", flags, directoryPath, PossiblyConcatenatedFlag::No);
}
diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h
index 55ba61e9fb..1e6353d0a7 100644
--- a/src/plugins/projectexplorer/gcctoolchain.h
+++ b/src/plugins/projectexplorer/gcctoolchain.h
@@ -55,8 +55,8 @@ public:
Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const override;
Utils::WarningFlags warningFlags(const QStringList &cflags) const override;
- QStringList includedFiles(const QStringList &flags,
- const QString &directoryPath) const override;
+ Utils::FilePaths includedFiles(const QStringList &flags,
+ const Utils::FilePath &directoryPath) const override;
MacroInspectionRunner createMacroInspectionRunner() const override;
BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(const Utils::Environment &env) const override;
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index d7b036ead8..1eebcc6806 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -1124,8 +1124,8 @@ WarningFlags MsvcToolChain::warningFlags(const QStringList &cflags) const
return flags;
}
-QStringList MsvcToolChain::includedFiles(const QStringList &flags,
- const QString &directoryPath) const
+FilePaths MsvcToolChain::includedFiles(const QStringList &flags,
+ const FilePath &directoryPath) const
{
return ToolChain::includedFiles("/FI", flags, directoryPath, PossiblyConcatenatedFlag::Yes);
}
diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h
index f93f3be28c..cb1fdc5523 100644
--- a/src/plugins/projectexplorer/msvctoolchain.h
+++ b/src/plugins/projectexplorer/msvctoolchain.h
@@ -55,8 +55,8 @@ public:
MacroInspectionRunner createMacroInspectionRunner() const override;
Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const override;
Utils::WarningFlags warningFlags(const QStringList &cflags) const override;
- QStringList includedFiles(const QStringList &flags,
- const QString &directoryPath) const override;
+ Utils::FilePaths includedFiles(const QStringList &flags,
+ const Utils::FilePath &directoryPath) const override;
BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(
const Utils::Environment &env) const override;
void addToEnvironment(Utils::Environment &env) const override;
diff --git a/src/plugins/projectexplorer/rawprojectpart.cpp b/src/plugins/projectexplorer/rawprojectpart.cpp
index 6abbedde93..31147c3803 100644
--- a/src/plugins/projectexplorer/rawprojectpart.cpp
+++ b/src/plugins/projectexplorer/rawprojectpart.cpp
@@ -11,13 +11,14 @@
#include "target.h"
#include <ios/iosconstants.h>
+
#include <utils/algorithm.h>
namespace ProjectExplorer {
RawProjectPartFlags::RawProjectPartFlags(const ToolChain *toolChain,
const QStringList &commandLineFlags,
- const QString &includeFileBaseDir)
+ const Utils::FilePath &includeFileBaseDir)
{
// Keep the following cheap/non-blocking for the ui thread. Expensive
// operations are encapsulated in ToolChainInfo as "runners".
@@ -25,7 +26,8 @@ RawProjectPartFlags::RawProjectPartFlags(const ToolChain *toolChain,
if (toolChain) {
warningFlags = toolChain->warningFlags(commandLineFlags);
languageExtensions = toolChain->languageExtensions(commandLineFlags);
- includedFiles = toolChain->includedFiles(commandLineFlags, includeFileBaseDir);
+ includedFiles = Utils::transform(toolChain->includedFiles(commandLineFlags, includeFileBaseDir),
+ &Utils::FilePath::toFSPathString);
}
}
diff --git a/src/plugins/projectexplorer/rawprojectpart.h b/src/plugins/projectexplorer/rawprojectpart.h
index 580c83d439..ca210ed43e 100644
--- a/src/plugins/projectexplorer/rawprojectpart.h
+++ b/src/plugins/projectexplorer/rawprojectpart.h
@@ -37,7 +37,7 @@ class PROJECTEXPLORER_EXPORT RawProjectPartFlags
public:
RawProjectPartFlags() = default;
RawProjectPartFlags(const ToolChain *toolChain, const QStringList &commandLineFlags,
- const QString &includeFileBaseDir);
+ const Utils::FilePath &includeFileBaseDir);
public:
QStringList commandLineFlags;
diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp
index 1a3d3d43f5..dfca4040fe 100644
--- a/src/plugins/projectexplorer/toolchain.cpp
+++ b/src/plugins/projectexplorer/toolchain.cpp
@@ -192,7 +192,7 @@ bool ToolChain::isValid() const
return d->m_isValid.value_or(false);
}
-QStringList ToolChain::includedFiles(const QStringList &flags, const QString &directory) const
+FilePaths ToolChain::includedFiles(const QStringList &flags, const FilePath &directory) const
{
Q_UNUSED(flags)
Q_UNUSED(directory)
@@ -466,12 +466,12 @@ Utils::LanguageVersion ToolChain::languageVersion(const Utils::Id &language, con
}
}
-QStringList ToolChain::includedFiles(const QString &option,
- const QStringList &flags,
- const QString &directoryPath,
- PossiblyConcatenatedFlag possiblyConcatenated)
+FilePaths ToolChain::includedFiles(const QString &option,
+ const QStringList &flags,
+ const FilePath &directoryPath,
+ PossiblyConcatenatedFlag possiblyConcatenated)
{
- QStringList result;
+ FilePaths result;
for (int i = 0; i < flags.size(); ++i) {
QString includeFile;
@@ -484,11 +484,8 @@ QStringList ToolChain::includedFiles(const QString &option,
if (includeFile.isEmpty() && flag == option && i + 1 < flags.size())
includeFile = flags[++i];
- if (!includeFile.isEmpty()) {
- if (!QFileInfo(includeFile).isAbsolute())
- includeFile = directoryPath + "/" + includeFile;
- result.append(QDir::cleanPath(includeFile));
- }
+ if (!includeFile.isEmpty())
+ result.append(directoryPath.resolvePath(includeFile));
}
return result;
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index 15bee2fdaa..35cad5333e 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -102,7 +102,7 @@ public:
virtual Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const = 0;
virtual Utils::WarningFlags warningFlags(const QStringList &cflags) const = 0;
- virtual QStringList includedFiles(const QStringList &flags, const QString &directory) const;
+ virtual Utils::FilePaths includedFiles(const QStringList &flags, const Utils::FilePath &directory) const;
virtual QString sysRoot() const;
QString explicitCodeModelTargetTriple() const;
@@ -184,10 +184,10 @@ protected:
virtual bool fromMap(const QVariantMap &data);
enum class PossiblyConcatenatedFlag { No, Yes };
- static QStringList includedFiles(const QString &option,
- const QStringList &flags,
- const QString &directoryPath,
- PossiblyConcatenatedFlag possiblyConcatenated);
+ static Utils::FilePaths includedFiles(const QString &option,
+ const QStringList &flags,
+ const Utils::FilePath &directoryPath,
+ PossiblyConcatenatedFlag possiblyConcatenated);
private:
ToolChain(const ToolChain &) = delete;
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
index b4f1bea8dc..3c78099b0f 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
@@ -337,7 +337,7 @@ void QmakeBuildSystem::updateCppCodeModel()
rpp.setBuildTargetType(BuildTargetType::Unknown);
break;
}
- const QString includeFileBaseDir = pro->sourceDir().toString();
+ const FilePath includeFileBaseDir = pro->sourceDir();
QStringList cxxArgs = pro->variableValue(Variable::CppFlags);
QStringList cArgs = pro->variableValue(Variable::CFlags);