CMake: Use FilePath in FileApi{Reader,Parser}

Helps docker.

Change-Id: I2e1eba61be983340260211bbee6c1bab8a59f883
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
hjk
2021-06-16 09:06:34 +02:00
parent 2b91593ea8
commit cf8a05fbec
2 changed files with 11 additions and 21 deletions

View File

@@ -94,6 +94,7 @@ static std::pair<QString, QString> nameValue(const QJsonObject &obj)
static QJsonDocument readJsonFile(const FilePath &filePath)
{
qCDebug(cmakeFileApi) << "readJsonFile:" << filePath;
QTC_ASSERT(!filePath.isEmpty(), return {});
QTC_CHECK(!filePath.needsDevice());
@@ -824,21 +825,17 @@ FilePath FileApiDetails::ReplyFileContents::jsonFile(const QString &kind, const
bool FileApiParser::setupCMakeFileApi(const FilePath &buildDirectory, Utils::FileSystemWatcher &watcher)
{
const QDir buildDir = QDir(buildDirectory.toString());
buildDir.mkpath(
QString::fromLatin1(CMAKE_RELATIVE_REPLY_PATH)); // So that we have a directory to watch!
// So that we have a directory to watch.
buildDirectory.pathAppended(CMAKE_RELATIVE_REPLY_PATH).ensureWritableDir();
const QString relativeQueryPath = QString::fromLatin1(CMAKE_RELATIVE_QUERY_PATH);
buildDir.mkpath(relativeQueryPath);
QDir queryDir = buildDir;
queryDir.cd(relativeQueryPath);
FilePath queryDir = buildDirectory.pathAppended(CMAKE_RELATIVE_QUERY_PATH);
queryDir.ensureWritableDir();
if (!queryDir.exists()) {
reportFileApiSetupFailure();
return false;
}
QTC_ASSERT(queryDir.exists(), );
QTC_ASSERT(queryDir.exists(), return false);
bool failedBefore = false;
for (const FilePath &filePath : cmakeQueryFilePaths(buildDirectory)) {
@@ -971,10 +968,9 @@ FilePath FileApiParser::scanForCMakeReplyFile(const FilePath &buildDirectory)
FilePaths FileApiParser::cmakeQueryFilePaths(const FilePath &buildDirectory)
{
QTC_CHECK(!buildDirectory.needsDevice());
QDir queryDir(QDir::cleanPath(buildDirectory.pathAppended(CMAKE_RELATIVE_QUERY_PATH).path()));
FilePath queryDir = buildDirectory / CMAKE_RELATIVE_QUERY_PATH;
return transform(CMAKE_QUERY_FILENAMES, [&queryDir](const QString &name) {
return FilePath::fromString(queryDir.absoluteFilePath(name));
return queryDir.absoluteFilePath(FilePath::fromString(name));
});
}

View File

@@ -36,7 +36,6 @@
#include <utils/algorithm.h>
#include <utils/runextensions.h>
#include <QDateTime>
#include <QLoggingCategory>
using namespace ProjectExplorer;
@@ -332,11 +331,7 @@ void FileApiReader::makeBackupConfiguration(bool store)
void FileApiReader::writeConfigurationIntoBuildDirectory(const QStringList &configurationArguments)
{
const FilePath buildDir = m_parameters.buildDirectory;
QTC_ASSERT(buildDir.exists(), buildDir.ensureWritableDir());
if (!buildDir.exists())
buildDir.ensureWritableDir();
const FilePath settingsFile = buildDir.pathAppended("qtcsettings.cmake");
QTC_CHECK(buildDir.ensureWritableDir());
QByteArray contents;
contents.append("# This file is managed by Qt Creator, do not edit!\n\n");
@@ -348,9 +343,8 @@ void FileApiReader::writeConfigurationIntoBuildDirectory(const QStringList &conf
.join('\n')
.toUtf8());
QFile file(settingsFile.toString());
QTC_ASSERT(file.open(QFile::WriteOnly | QFile::Truncate), return );
file.write(contents);
const FilePath settingsFile = buildDir / "qtcsettings.cmake";
QTC_CHECK(settingsFile.writeFileContents(contents));
}
void FileApiReader::startCMakeState(const QStringList &configurationArguments)