1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #pragma once
4 
5 #include "cmConfigure.h" // IWYU pragma: keep
6 
7 #include <iosfwd>
8 #include <string>
9 
10 #include "cmInstallGenerator.h"
11 #include "cmListFileCache.h"
12 
13 class cmLocalGenerator;
14 class cmMakefile;
15 
16 /** \class cmInstallSubdirectoryGenerator
17  * \brief Generate target installation rules.
18  */
19 class cmInstallSubdirectoryGenerator : public cmInstallGenerator
20 {
21 public:
22   cmInstallSubdirectoryGenerator(cmMakefile* makefile,
23                                  std::string binaryDirectory,
24                                  cmListFileBacktrace backtrace);
25   ~cmInstallSubdirectoryGenerator() override;
26 
27   bool HaveInstall() override;
28   void CheckCMP0082(bool& haveSubdirectoryInstall,
29                     bool& haveInstallAfterSubdirectory) override;
30 
31   bool Compute(cmLocalGenerator* lg) override;
32 
33 protected:
34   void GenerateScript(std::ostream& os) override;
35 
36   cmMakefile* const Makefile;
37   std::string const BinaryDirectory;
38   cmLocalGenerator* LocalGenerator;
39 };
40