blob: 0851d332a866e5e0912fc6a6dba317bdbe67d6bf [file] [log] [blame]
/* 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 "cmExportBuildFileGenerator.h"
#include "cmExportPackageInfoGenerator.h"
namespace Json {
class Value;
}
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);
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;
// TODO: Generate C++ module info in a not-CMake-specific format.
};