diff options
Diffstat (limited to 'Source/cmInstallGenerator.h')
-rw-r--r-- | Source/cmInstallGenerator.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/Source/cmInstallGenerator.h b/Source/cmInstallGenerator.h new file mode 100644 index 0000000..ad9fc28 --- /dev/null +++ b/Source/cmInstallGenerator.h @@ -0,0 +1,74 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmInstallGenerator_h +#define cmInstallGenerator_h + +#include "cmInstallType.h" +#include "cmScriptGenerator.h" + +class cmLocalGenerator; +class cmMakefile; + +/** \class cmInstallGenerator + * \brief Support class for generating install scripts. + * + */ +class cmInstallGenerator : public cmScriptGenerator +{ +public: + enum MessageLevel + { + MessageDefault, + MessageAlways, + MessageLazy, + MessageNever + }; + + cmInstallGenerator(const char* destination, + std::vector<std::string> const& configurations, + const char* component, MessageLevel message, + bool exclude_from_all); + ~cmInstallGenerator() CM_OVERRIDE; + + void AddInstallRule( + std::ostream& os, std::string const& dest, cmInstallType type, + std::vector<std::string> const& files, bool optional = false, + const char* permissions_file = CM_NULLPTR, + const char* permissions_dir = CM_NULLPTR, const char* rename = CM_NULLPTR, + const char* literal_args = CM_NULLPTR, Indent const& indent = Indent()); + + /** Get the install destination as it should appear in the + installation script. */ + std::string ConvertToAbsoluteDestination(std::string const& dest) const; + + /** Test if this generator installs something for a given configuration. */ + bool InstallsForConfig(const std::string& config); + + /** Select message level from CMAKE_INSTALL_MESSAGE or 'never'. */ + static MessageLevel SelectMessageLevel(cmMakefile* mf, bool never = false); + + virtual void Compute(cmLocalGenerator*) {} + +protected: + void GenerateScript(std::ostream& os) CM_OVERRIDE; + + std::string CreateComponentTest(const char* component, + bool exclude_from_all); + + // Information shared by most generator types. + std::string Destination; + std::string Component; + MessageLevel Message; + bool ExcludeFromAll; +}; + +#endif |