| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #pragma once |
| |
| #include "cmConfigure.h" // IWYU pragma: keep |
| |
| #include <iosfwd> |
| #include <string> |
| #include <vector> |
| |
| class cmLocalGenerator; |
| class cmXCodeObject; |
| class cmXMLWriter; |
| |
| /** \class cmXCodeScheme |
| * \brief Write shared schemes for native targets in Xcode project. |
| */ |
| class cmXCodeScheme |
| { |
| public: |
| using TestObjects = std::vector<const cmXCodeObject*>; |
| |
| cmXCodeScheme(cmLocalGenerator* lg, cmXCodeObject* xcObj, TestObjects tests, |
| const std::vector<std::string>& configList, |
| unsigned int xcVersion); |
| |
| void WriteXCodeSharedScheme(const std::string& xcProjDir, |
| const std::string& container); |
| |
| private: |
| cmLocalGenerator* const LocalGenerator; |
| const cmXCodeObject* const Target; |
| const TestObjects Tests; |
| const std::string& TargetName; |
| const std::vector<std::string>& ConfigList; |
| const unsigned int XcodeVersion; |
| |
| void WriteXCodeXCScheme(std::ostream& fout, const std::string& container); |
| |
| void WriteBuildAction(cmXMLWriter& xout, const std::string& container); |
| void WriteTestAction(cmXMLWriter& xout, const std::string& configuration, |
| const std::string& container); |
| void WriteLaunchAction(cmXMLWriter& xout, const std::string& configuration, |
| const std::string& container); |
| |
| bool WriteLaunchActionAttribute(cmXMLWriter& xout, |
| const std::string& attrName, |
| const std::string& varName); |
| |
| bool WriteLaunchActionBooleanAttribute(cmXMLWriter& xout, |
| const std::string& attrName, |
| const std::string& varName, |
| bool defaultValue); |
| |
| bool WriteLaunchActionAdditionalOption(cmXMLWriter& xout, |
| const std::string& attrName, |
| const std::string& value, |
| const std::string& varName); |
| |
| void WriteProfileAction(cmXMLWriter& xout, const std::string& configuration); |
| void WriteAnalyzeAction(cmXMLWriter& xout, const std::string& configuration); |
| void WriteArchiveAction(cmXMLWriter& xout, const std::string& configuration); |
| |
| void WriteBuildableReference(cmXMLWriter& xout, const cmXCodeObject* xcObj, |
| const std::string& container); |
| |
| void WriteCustomWorkingDirectory(cmXMLWriter& xout, |
| const std::string& configuration); |
| |
| std::string WriteVersionString(); |
| std::string FindConfiguration(const std::string& name); |
| |
| bool IsTestable() const; |
| |
| static bool IsExecutable(const cmXCodeObject* target); |
| }; |