1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
5 #include "cmConfigure.h" // IWYU pragma: keep
12 #include "cmInstallGenerator.h"
14 class cmExportInstallFileGenerator
;
16 class cmListFileBacktrace
;
17 class cmLocalGenerator
;
19 /** \class cmInstallExportGenerator
20 * \brief Support class for generating rules for creating export files.
22 class cmInstallExportGenerator
: public cmInstallGenerator
25 cmInstallExportGenerator(cmExportSet
* exportSet
, std::string destination
,
26 std::string filePermissions
,
27 std::vector
<std::string
> const& configurations
,
28 std::string component
, MessageLevel message
,
29 bool excludeFromAll
, std::string filename
,
30 std::string targetNamespace
,
31 std::string cxxModulesDirectory
,
32 cmListFileBacktrace backtrace
);
33 cmInstallExportGenerator(const cmInstallExportGenerator
&) = delete;
34 ~cmInstallExportGenerator() override
;
36 cmInstallExportGenerator
& operator=(const cmInstallExportGenerator
&) =
39 virtual char const* InstallSubcommand() const = 0;
41 cmExportSet
* GetExportSet() { return this->ExportSet
; }
43 bool Compute(cmLocalGenerator
* lg
) override
;
45 cmLocalGenerator
* GetLocalGenerator() const { return this->LocalGenerator
; }
47 const std::string
& GetNamespace() const { return this->Namespace
; }
49 std::string
const& GetMainImportFile() const { return this->MainImportFile
; }
51 std::string
const& GetDestination() const { return this->Destination
; }
52 std::string
GetDestinationFile() const;
53 std::string
GetFileName() const { return this->FileName
; }
54 std::string
GetTempDir() const;
55 std::string
GetCxxModuleDirectory() const
57 return this->CxxModulesDirectory
;
61 void GenerateScript(std::ostream
& os
) override
;
62 void GenerateScriptConfigs(std::ostream
& os
, Indent indent
) override
;
63 void GenerateScriptActions(std::ostream
& os
, Indent indent
) override
;
64 std::string
TempDirCalculate() const;
65 void ComputeTempDir();
67 cmExportSet
* const ExportSet
;
68 std::string
const FilePermissions
;
69 std::string
const FileName
;
70 std::string
const Namespace
;
71 std::string
const CxxModulesDirectory
;
72 cmLocalGenerator
* LocalGenerator
= nullptr;
75 std::string MainImportFile
;
76 std::unique_ptr
<cmExportInstallFileGenerator
> EFGen
;