CMake: Use FilePath for cmakeExecutable in preset parser

Shifts the boundary bit, no change in functionality intended.

Change-Id: I0442fd4804d368813235e38f27f82e8a3c04df20
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
hjk
2024-09-12 15:31:53 +02:00
parent d3a4f865e4
commit e98ce519c1
3 changed files with 11 additions and 9 deletions

View File

@@ -362,7 +362,7 @@ static CMakeConfig configurationFromPresetProbe(
Process cmake;
cmake.setDisableUnixTerminal();
const FilePath cmakeExecutable = FilePath::fromString(configurePreset.cmakeExecutable.value());
const FilePath cmakeExecutable = configurePreset.cmakeExecutable.value();
Environment env = cmakeExecutable.deviceEnvironment();
CMakePresets::Macros::expand(configurePreset, env, sourceDirectory);
@@ -844,21 +844,21 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
if (!configurePreset.cmakeExecutable) {
const CMakeTool *cmakeTool = CMakeToolManager::defaultCMakeTool();
if (cmakeTool) {
configurePreset.cmakeExecutable = cmakeTool->cmakeExecutable().toString();
configurePreset.cmakeExecutable = cmakeTool->cmakeExecutable();
} else {
configurePreset.cmakeExecutable = QString();
configurePreset.cmakeExecutable = FilePath();
TaskHub::addTask(
BuildSystemTask(Task::TaskType::Error, Tr::tr("<No CMake Tool available>")));
TaskHub::requestPopup();
}
} else {
QString cmakeExecutable = configurePreset.cmakeExecutable.value();
QString cmakeExecutable = configurePreset.cmakeExecutable.value().toString();
CMakePresets::Macros::expand(configurePreset, env, projectDirectory(), cmakeExecutable);
configurePreset.cmakeExecutable = FilePath::fromUserInput(cmakeExecutable).path();
configurePreset.cmakeExecutable = FilePath::fromUserInput(cmakeExecutable);
}
data->cmakeBinary = Utils::FilePath::fromString(configurePreset.cmakeExecutable.value());
data->cmakeBinary = configurePreset.cmakeExecutable.value();
if (configurePreset.generator)
data->generator = configurePreset.generator.value();
@@ -926,7 +926,7 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
updateCompilerPaths(config, env);
config << CMakeConfigItem("CMAKE_COMMAND",
CMakeConfigItem::PATH,
configurePreset.cmakeExecutable.value().toUtf8());
configurePreset.cmakeExecutable.value().toString().toUtf8());
if (configurePreset.generator)
config << CMakeConfigItem("CMAKE_GENERATOR",
CMakeConfigItem::STRING,

View File

@@ -11,6 +11,8 @@
#include <QJsonDocument>
#include <QJsonObject>
using namespace Utils;
namespace CMakeProjectManager::Internal {
bool parseVersion(const QJsonValue &jsonValue, int &version)
@@ -228,7 +230,7 @@ bool parseConfigurePresets(const QJsonValue &jsonValue,
if (object.contains("toolchainFile"))
preset.toolchainFile = object.value("toolchainFile").toString();
if (object.contains("cmakeExecutable"))
preset.cmakeExecutable = object.value("cmakeExecutable").toString();
preset.cmakeExecutable = FilePath::fromUserInput(object.value("cmakeExecutable").toString());
const QJsonObject cacheVariablesObj = object.value("cacheVariables").toObject();
for (const QString &cacheKey : cacheVariablesObj.keys()) {

View File

@@ -103,7 +103,7 @@ public:
std::optional<QString> toolchainFile;
std::optional<QString> binaryDir;
std::optional<QString> installDir;
std::optional<QString> cmakeExecutable;
std::optional<Utils::FilePath> cmakeExecutable;
std::optional<CMakeConfig> cacheVariables;
std::optional<Utils::Environment> environment;
std::optional<Warnings> warnings;