diff options
Diffstat (limited to 'Source/cmFindPackageCommand.cxx')
-rw-r--r-- | Source/cmFindPackageCommand.cxx | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index f55d838..18457a7 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -262,6 +262,9 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args) } else if (args[i] == "EXACT") { this->VersionExact = true; doing = DoingNone; + } else if (args[i] == "GLOBAL") { + this->GlobalScope = true; + doing = DoingNone; } else if (args[i] == "MODULE") { moduleArgs.insert(i); doing = DoingNone; @@ -364,6 +367,12 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args) } } + if (!this->GlobalScope) { + cmValue value( + this->Makefile->GetDefinition("CMAKE_FIND_PACKAGE_TARGETS_GLOBAL")); + this->GlobalScope = value.IsOn(); + } + std::vector<std::string> doubledComponents; std::set_intersection(requiredComponents.begin(), requiredComponents.end(), optionalComponents.begin(), optionalComponents.end(), @@ -1200,6 +1209,11 @@ bool cmFindPackageCommand::ReadListFile(const std::string& f, PolicyScopeRule psr) { const bool noPolicyScope = !this->PolicyScope || psr == NoPolicyScope; + + using ITScope = cmMakefile::ImportedTargetScope; + ITScope scope = this->GlobalScope ? ITScope::Global : ITScope::Local; + cmMakefile::SetGlobalTargetImportScope globScope(this->Makefile, scope); + if (this->Makefile->ReadDependentFile(f, noPolicyScope)) { return true; } |