CMake/Source/cmInstallGenerator.h
Brad King d19b64d671 install(DIRECTORY): Add MESSAGE_NEVER option to avoid output (#13761)
Installing large directories, e.g., the output of a doxygen run, prints
one line per file resulting in too much noise in the build output.  Add
an option to the install(DIRECTORY) command to not print anything upon
make install.

Extend the RunCMake.install test with cases covering MESSAGE_NEVER
behavior of the install(DIRECTORY) command.

Suggested-by: Stefan Eilemann <Stefan.Eilemann@epfl.ch>
2014-06-24 13:18:20 -04:00

78 lines
2.2 KiB
C++

/*============================================================================
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);
virtual ~cmInstallGenerator();
void AddInstallRule(
std::ostream& os, cmInstallType type,
std::vector<std::string> const& files,
bool optional = false,
const char* permissions_file = 0,
const char* permissions_dir = 0,
const char* rename = 0,
const char* literal_args = 0,
Indent const& indent = Indent()
);
const char* GetDestination() const
{ return this->Destination.c_str(); }
/** Get the install destination as it should appear in the
installation script. */
std::string GetInstallDestination() 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);
protected:
virtual void GenerateScript(std::ostream& os);
std::string CreateComponentTest(const char* component);
// Information shared by most generator types.
std::string Destination;
std::string Component;
MessageLevel Message;
};
#endif