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

View File

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

View File

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