/* 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 #include #include "cmExportBuildFileGenerator.h" #include "cmExportPackageInfoGenerator.h" namespace Json { class Value; } class cmDiagnosticContext; class cmGeneratorTarget; class cmPackageInfoArguments; /** \class cmExportBuildPackageInfoGenerator * \brief Generate a file exporting targets from a build tree. * * cmExportBuildCMakeConfigGenerator generates a file exporting targets from * a build tree. This exports the targets to the Common Package Specification * (https://cps-org.github.io/cps/). * * This is used to implement the export() command. */ class cmExportBuildPackageInfoGenerator : public cmExportBuildFileGenerator , public cmExportPackageInfoGenerator { public: cmExportBuildPackageInfoGenerator(cmPackageInfoArguments arguments, cmDiagnosticContext context); protected: // Implement virtual methods from the superclass. bool GenerateMainFile(std::ostream& os) override; void GenerateImportTargetsConfig(std::ostream&, std::string const&, std::string const&) override { } void GenerateInterfacePropertiesConfig(Json::Value& configurations, cmGeneratorTarget* target, std::string const& config); std::string GetCxxModulesDirectory() const override; using cmExportPackageInfoGenerator::GenerateTargetFileSets; void GenerateTargetFileSets(Json::Value& fileSets, cmGeneratorTarget const* target, cmGeneratorFileSet const* fileSet, cmTargetExport const* targetExport, std::string const& type) const override; };