diff options
Diffstat (limited to 'Source/cmLocalVisualStudioGenerator.h')
-rw-r--r-- | Source/cmLocalVisualStudioGenerator.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Source/cmLocalVisualStudioGenerator.h b/Source/cmLocalVisualStudioGenerator.h new file mode 100644 index 0000000..ace2f89 --- /dev/null +++ b/Source/cmLocalVisualStudioGenerator.h @@ -0,0 +1,60 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmLocalVisualStudioGenerator_h +#define cmLocalVisualStudioGenerator_h + +#include "cmConfigure.h" // IWYU pragma: keep + +#include <map> +#include <memory> // IWYU pragma: keep +#include <string> + +#include "cmGlobalVisualStudioGenerator.h" +#include "cmLocalGenerator.h" + +class cmCustomCommand; +class cmCustomCommandGenerator; +class cmGeneratorTarget; +class cmGlobalGenerator; +class cmMakefile; +class cmSourceFile; + +/** \class cmLocalVisualStudioGenerator + * \brief Base class for Visual Studio generators. + * + * cmLocalVisualStudioGenerator provides functionality common to all + * Visual Studio generators. + */ +class cmLocalVisualStudioGenerator : public cmLocalGenerator +{ +public: + cmLocalVisualStudioGenerator(cmGlobalGenerator* gg, cmMakefile* mf); + virtual ~cmLocalVisualStudioGenerator(); + + /** Construct a script from the given list of command lines. */ + std::string ConstructScript(cmCustomCommandGenerator const& ccg, + const std::string& newline = "\n"); + + /** Label to which to jump in a batch file after a failed step in a + sequence of custom commands. */ + const char* GetReportErrorLabel() const; + + cmGlobalVisualStudioGenerator::VSVersion GetVersion() const; + + virtual std::string ComputeLongestObjectDirectory( + cmGeneratorTarget const*) const = 0; + + virtual void ComputeObjectFilenames( + std::map<cmSourceFile const*, std::string>& mapping, + cmGeneratorTarget const* = 0); + +protected: + virtual const char* ReportErrorLabel() const; + virtual bool CustomCommandUseLocal() const { return false; } + + /** Construct a custom command to make exe import lib dir. */ + std::unique_ptr<cmCustomCommand> MaybeCreateImplibDir( + cmGeneratorTarget* target, const std::string& config, bool isFortran); +}; + +#endif |