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