#ifndef CMVIS_TARGET_H #define CMVIS_TARGET_H #include #include class Target { public: Target(const Target&) =default; Target(Target&&) noexcept =default; Target& operator=(const Target&) =default; Target& operator=(Target&&) noexcept =default; ~Target() =default; [[nodiscard]] const std::string& id() const noexcept; [[nodiscard]] const std::string& name() const noexcept; [[nodiscard]] const std::string& type() const noexcept; [[nodiscard]] bool isGeneratorProvided() const noexcept; [[nodiscard]] bool isImported() const noexcept; [[nodiscard]] const std::vector& dependencies() const noexcept; [[nodiscard]] const std::vector& sources() const noexcept; [[nodiscard]] const std::vector& includes() const noexcept; [[nodiscard]] const std::vector& defines() const noexcept; [[nodiscard]] const std::vector& compileFlags() const noexcept; [[nodiscard]] const std::vector& linkLibraries() const noexcept; [[nodiscard]] bool hasArtifacts() const noexcept; private: friend class TargetFactory; struct BuildData { std::string id; std::string name; std::string type; bool isGeneratorProvided{false}; bool isImported{false}; std::vector dependencies; std::vector sources; std::vector includes; std::vector defines; std::vector compileFlags; std::vector linkLibraries; bool hasArtifacts{false}; }; explicit Target(BuildData&& data); std::string id_; std::string name_; std::string type_; bool isGeneratorProvided_; bool isImported_; std::vector dependencies_; std::vector sources_; std::vector includes_; std::vector defines_; std::vector compileFlags_; std::vector linkLibraries_; bool hasArtifacts_; }; #endif