mirror of
https://github.com/Kitware/CMake.git
synced 2026-06-30 19:57:41 +00:00
To manage the generation step, introduce cmGeneratorFileSet and cmGeneratorFileSets classes. These reorganizations of the code are done in preparation of the implementation of SOURCES file set type as well as user's file set types. Issues: #27550, #27383
75 lines
2.9 KiB
C++
75 lines
2.9 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file LICENSE.rst or https://cmake.org/licensing for details. */
|
|
#pragma once
|
|
|
|
#include "cmConfigure.h" // IWYU pragma: keep
|
|
|
|
#include <iosfwd>
|
|
#include <string>
|
|
|
|
#include "cmExportCMakeConfigGenerator.h"
|
|
#include "cmExportInstallFileGenerator.h"
|
|
|
|
class cmInstallExportGenerator;
|
|
|
|
/** \class cmExportInstallCMakeConfigGenerator
|
|
* \brief Generate files exporting targets from an install tree.
|
|
*
|
|
* cmExportInstallCMakeConfigGenerator generates files exporting targets from
|
|
* an installation tree. The files are placed in a temporary location for
|
|
* installation by cmInstallExportGenerator. The file format is CMake's native
|
|
* package configuration format.
|
|
*
|
|
* One main file is generated that creates the imported targets and loads
|
|
* per-configuration files. Target locations and settings for each
|
|
* configuration are written to these per-configuration files. After
|
|
* installation the main file loads the configurations that have been
|
|
* installed.
|
|
*
|
|
* This is used to implement the INSTALL(EXPORT) command.
|
|
*/
|
|
class cmExportInstallCMakeConfigGenerator
|
|
: public cmExportCMakeConfigGenerator
|
|
, public cmExportInstallFileGenerator
|
|
{
|
|
public:
|
|
/** Construct with the export installer that will install the
|
|
files. */
|
|
cmExportInstallCMakeConfigGenerator(cmInstallExportGenerator* iegen);
|
|
|
|
/** Compute the globbing expression used to load per-config import
|
|
files from the main file. */
|
|
std::string GetConfigImportFileGlob() const override;
|
|
|
|
protected:
|
|
// Implement virtual methods from the superclass.
|
|
bool GenerateMainFile(std::ostream& os) override;
|
|
void GenerateImportTargetsConfig(std::ostream& os, std::string const& config,
|
|
std::string const& suffix) override;
|
|
void GenerateImportConfig(std::ostream& os,
|
|
std::string const& config) override;
|
|
|
|
char GetConfigFileNameSeparator() const override { return '-'; }
|
|
|
|
/** Generate the relative import prefix. */
|
|
virtual void GenerateImportPrefix(std::ostream&);
|
|
|
|
/** Generate the relative import prefix. */
|
|
virtual void LoadConfigFiles(std::ostream&);
|
|
|
|
virtual void CleanupTemporaryVariables(std::ostream&);
|
|
|
|
std::string GetFileSetDirectories(cmGeneratorTarget* gte,
|
|
cmGeneratorFileSet const* fileSet,
|
|
cmTargetExport const* te) override;
|
|
std::string GetFileSetFiles(cmGeneratorTarget* gte,
|
|
cmGeneratorFileSet const* fileSet,
|
|
cmTargetExport const* te) override;
|
|
|
|
std::string GetCxxModulesDirectory() const override;
|
|
void GenerateCxxModuleConfigInformation(std::string const&,
|
|
std::ostream&) const override;
|
|
bool GenerateImportCxxModuleConfigTargetInclusion(std::string const&,
|
|
std::string const&);
|
|
};
|