Dependency providers: Add find_package and FetchContent support

Fixes: #22619
This commit is contained in:
Craig Scott
2022-05-18 23:29:21 +10:00
parent 8a28368feb
commit 2aa83fa15b
50 changed files with 957 additions and 38 deletions
+25
View File
@@ -8,11 +8,16 @@
#include <memory>
#include <set>
#include <string>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
#include <cm/optional>
#include "cmDefinitions.h"
#include "cmDependencyProvider.h"
#include "cmLinkedTree.h"
#include "cmPolicies.h"
#include "cmProperty.h"
@@ -227,6 +232,24 @@ public:
ProjectKind GetProjectKind() const;
void ClearDependencyProvider() { this->DependencyProvider.reset(); }
void SetDependencyProvider(cmDependencyProvider provider)
{
this->DependencyProvider = std::move(provider);
}
cm::optional<cmDependencyProvider> const& GetDependencyProvider() const
{
return this->DependencyProvider;
}
Command GetDependencyProviderCommand(
cmDependencyProvider::Method method) const;
void SetInTopLevelIncludes(bool inTopLevelIncludes)
{
this->ProcessingTopLevelIncludes = inTopLevelIncludes;
}
bool InTopLevelIncludes() const { return this->ProcessingTopLevelIncludes; }
private:
friend class cmake;
void AddCacheEntry(const std::string& key, const char* value,
@@ -288,4 +311,6 @@ private:
bool NinjaMulti = false;
Mode StateMode = Unknown;
ProjectKind StateProjectKind = ProjectKind::Normal;
cm::optional<cmDependencyProvider> DependencyProvider;
bool ProcessingTopLevelIncludes = false;
};