forked from qt-creator/qt-creator
CMakePM: Add supprot for CMakePresets version 3
This includes Condition and toolchainFile https://cmake.org/cmake/help/v3.21/manual/cmake-presets.7.html Task-number: QTCREATORBUG-24555 Change-Id: I1026390af67b2be1aa0c3b02b654fc19442d3c89 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -123,6 +123,11 @@ FilePaths CMakeProjectImporter::importCandidates()
|
||||
if (configPreset.hidden.value())
|
||||
continue;
|
||||
|
||||
if (configPreset.condition) {
|
||||
if (!CMakePresets::Macros::evaluatePresetCondition(configPreset, projectFilePath()))
|
||||
continue;
|
||||
}
|
||||
|
||||
const FilePath configPresetDir = m_presetsTempDir.filePath(configPreset.name);
|
||||
configPresetDir.createDir();
|
||||
candidates << configPresetDir;
|
||||
@@ -403,13 +408,15 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
|
||||
auto data = std::make_unique<DirectoryData>();
|
||||
|
||||
const QString presetName = importPath.fileName();
|
||||
|
||||
PresetsDetails::ConfigurePreset configurePreset
|
||||
= Utils::findOrDefault(m_presetsData.configurePresets,
|
||||
[presetName](const PresetsDetails::ConfigurePreset &preset) {
|
||||
return preset.name == presetName;
|
||||
});
|
||||
|
||||
Environment env = Environment::systemEnvironment();
|
||||
CMakePresets::Macros::expand(configurePreset, env, projectDirectory());
|
||||
|
||||
if (configurePreset.displayName)
|
||||
data->cmakePresetDisplayname = configurePreset.displayName.value();
|
||||
else
|
||||
@@ -435,14 +442,16 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
|
||||
QString binaryDir = importPath.toString();
|
||||
if (configurePreset.binaryDir) {
|
||||
binaryDir = configurePreset.binaryDir.value();
|
||||
CMakePresets::Macros::expand(configurePreset,
|
||||
Environment::systemEnvironment(),
|
||||
projectDirectory(),
|
||||
binaryDir);
|
||||
CMakePresets::Macros::expand(configurePreset, env, projectDirectory(), binaryDir);
|
||||
}
|
||||
|
||||
data->buildDirectory = Utils::FilePath::fromString(binaryDir);
|
||||
|
||||
CMakePresets::Macros::updateToolchainFile(configurePreset,
|
||||
env,
|
||||
projectDirectory(),
|
||||
data->buildDirectory);
|
||||
|
||||
const CMakeConfig cache = configurePreset.cacheVariables
|
||||
? configurePreset.cacheVariables.value()
|
||||
: CMakeConfig();
|
||||
|
||||
Reference in New Issue
Block a user