1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
/* 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 <cm/optional>
#include <cm/string_view>
#include "cmExportInstallFileGenerator.h"
#include "cmExportSbomGenerator.h"
class cmFileSet;
class cmGeneratorTarget;
class cmInstallExportGenerator;
class cmSbomArguments;
class cmTargetExport;
class cmExportInstallSbomGenerator
: public cmExportSbomGenerator
, public cmExportInstallFileGenerator
{
public:
/** Construct with the export installer that will install the
files. */
cmExportInstallSbomGenerator(cmInstallExportGenerator* iegen,
cmSbomArguments arguments);
/** Compute the globbing expression used to load per-config import
files from the main file. */
std::string GetConfigImportFileGlob() const override;
protected:
std::string const& GetExportName() const override;
cm::string_view GetImportPrefixWithSlash() const override;
std::string GetCxxModuleFile(std::string const& name) const override;
void GenerateCxxModuleConfigInformation(std::string const&,
std::ostream& os) const override;
// 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 HandleMissingTarget(std::string& /* link_libs */,
cmGeneratorTarget const* /* depender */,
cmGeneratorTarget* /* dependee */) override;
bool CheckInterfaceDirs(std::string const& /* prepro */,
cmGeneratorTarget const* /* target */,
std::string const& /* prop */) const override;
char GetConfigFileNameSeparator() const override { return '@'; }
std::string GenerateImportPrefix() const;
std::string InstallNameDir(cmGeneratorTarget const* target,
std::string const& config) override;
std::string GetCxxModulesDirectory() const override;
cm::optional<std::string> GetFileSetDirectory(
cmGeneratorTarget* gte, cmTargetExport const* te, cmFileSet* fileSet,
cm::optional<std::string> const& config = {});
};
|