// Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 #pragma once #include #include "cmakeconfigitem.h" #include #include #include namespace CMakeProjectManager { namespace Internal { namespace PresetsDetails { class ValueStrategyPair { public: std::optional value; enum class Strategy : bool { set, external }; std::optional strategy; }; class Warnings { public: std::optional dev; std::optional deprecated; std::optional uninitialized = false; std::optional unusedCli = true; std::optional systemVars = false; }; class Errors { public: std::optional dev; std::optional deprecated; }; class Debug { public: std::optional output = false; std::optional tryCompile = false; std::optional find = false; }; class ConfigurePreset { public: void inheritFrom(const ConfigurePreset &other); QString name; std::optional hidden = false; std::optional inherits; std::optional> vendor; std::optional displayName; std::optional description; std::optional generator; std::optional architecture; std::optional toolset; std::optional binaryDir; std::optional cmakeExecutable; std::optional cacheVariables; std::optional> environment; std::optional warnings; std::optional errors; std::optional debug; }; class BuildPreset { public: void inheritFrom(const BuildPreset &other); QString name; std::optional hidden = false; std::optional inherits; std::optional> vendor; std::optional displayName; std::optional description; std::optional> environment; std::optional configurePreset; std::optional inheritConfigureEnvironment = true; std::optional jobs; std::optional targets; std::optional configuration; std::optional verbose; std::optional cleanFirst; std::optional nativeToolOptions; }; } // namespace PresetsDetails class PresetsData { public: int version = 0; QVersionNumber cmakeMinimimRequired; QHash vendor; QList configurePresets; QList buildPresets; }; class PresetsParser { PresetsData m_presetsData; public: bool parse(Utils::FilePath const &jsonFile, QString &errorMessage, int &errorLine); const PresetsData &presetsData() const; }; } // namespace Internal } // namespace CMakeProjectManager