/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmXCodeScheme_h #define cmXCodeScheme_h #include "cmConfigure.h" // IWYU pragma: keep #include #include "cmGlobalXCodeGenerator.h" #include "cmSystemTools.h" #include "cmXCodeObject.h" #include "cmXMLWriter.h" /** \class cmXCodeScheme * \brief Write shared schemes for native targets in Xcode project. */ class cmXCodeScheme { public: typedef std::vector TestObjects; cmXCodeScheme(cmXCodeObject* xcObj, const TestObjects& tests, const std::vector& configList, unsigned int xcVersion); void WriteXCodeSharedScheme(const std::string& xcProjDir, const std::string& container); private: const cmXCodeObject* const Target; const TestObjects Tests; const std::string& TargetName; const std::vector& 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); 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); std::string WriteVersionString(); std::string FindConfiguration(const std::string& name); bool IsTestable() const; static bool IsExecutable(const cmXCodeObject* target); }; #endif