CPGen
C++ project generator
Loading...
Searching...
No Matches
Resolved.hpp
Go to the documentation of this file.
1#pragma once
2
15#include "CPGen/Core/Config.hpp"
16#include "CPGen/Core/Module.hpp"
17
27 std::string
29 std::string
31 std::vector<std::string>
33
35 std::optional<std::string> cmake_include;
36
39 std::optional<std::string> post_link;
40};
41
50 std::string name;
51
54 std::optional<FetchContent> fetch_content;
55};
56
66 std::string name;
67 std::string path;
68
74 bool operator==(const ResolvedTarget &other) const {
75 return name == other.name;
76 }
77};
78
85namespace std {
86template <> struct hash<ResolvedTarget> {
92 size_t operator()(const ResolvedTarget &target) const noexcept {
93 return hash<std::string>{}(target.name);
94 }
95};
96} // namespace std
97
107 std::vector<ResolvedTarget>
109 std::vector<ResolvedModule> modules;
110 std::vector<TargetInjection>
112};
Project configuration types produced by the CLI and consumed by the resolvers.
TargetType
Describes the CMake target kind to generate for a build target.
Definition Config.hpp:19
@ Executable
A standalone executable target (add_executable).
Defines the FetchContent descriptor used by module definitions.
std::hash specialisation for ResolvedTarget.
Definition Resolved.hpp:85
Fully parsed project configuration produced by CLI::parse.
Definition Config.hpp:59
A dependency module after its JSON definition has been parsed.
Definition Resolved.hpp:49
std::string name
Canonical module name as declared in its JSON file.
Definition Resolved.hpp:50
std::optional< FetchContent > fetch_content
Definition Resolved.hpp:54
Aggregated output of the full resolver pipeline.
Definition Resolved.hpp:105
std::vector< ResolvedModule > modules
All resolved dependency modules.
Definition Resolved.hpp:109
ProjectConfig config
The original configuration that was resolved.
Definition Resolved.hpp:106
std::vector< ResolvedTarget > targets
Deduplicated list of build targets to generate.
Definition Resolved.hpp:108
std::vector< TargetInjection > injections
All CMake snippets collected from every module.
Definition Resolved.hpp:111
A build target after module injections have been applied.
Definition Resolved.hpp:64
std::string name
Target name used in CMake (e.g. "test").
Definition Resolved.hpp:66
std::string path
Relative source directory for this target.
Definition Resolved.hpp:67
TargetType type
CMake target kind.
Definition Resolved.hpp:65
bool operator==(const ResolvedTarget &other) const
Equality based solely on the target name.
Definition Resolved.hpp:74
Describes the CMake snippets that a module contributes to a target.
Definition Resolved.hpp:26
std::string module_name
Identifier of the module that produced this injection.
Definition Resolved.hpp:30
std::string target_name
Name of the CMake target that receives this injection.
Definition Resolved.hpp:28
std::optional< std::string > post_link
Definition Resolved.hpp:39
std::optional< std::string > cmake_include
Optional CMake module to include() (e.g. "GoogleTest").
Definition Resolved.hpp:35
std::vector< std::string > link
Libraries to pass to target_link_libraries.
Definition Resolved.hpp:32
size_t operator()(const ResolvedTarget &target) const noexcept
Computes a hash based on the target name.
Definition Resolved.hpp:92