mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
find_package: Save package information only after successfully loading it
If a package configuration file sets `<PackageName>_FOUND` to false, the package is considered not found. Do not save its package info. Note that this exposes an existing pointer invalidation on nested `find_package` calls, which will be fixed in following commits. Issue: #27730
This commit is contained in:
@@ -1732,6 +1732,12 @@ bool cmFindPackageCommand::HandlePackageMode(
|
||||
// The configuration file is invalid.
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (this->UseConfigFiles && found) {
|
||||
this->CurrentPackageInfo->Directory =
|
||||
cmSystemTools::GetFilenamePath(this->FileFound);
|
||||
this->CurrentPackageInfo->Version = this->VersionFound;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->UseFindModules && !found &&
|
||||
@@ -1975,8 +1981,6 @@ bool cmFindPackageCommand::FindConfig()
|
||||
std::string init;
|
||||
if (found) {
|
||||
init = cmSystemTools::GetFilenamePath(this->FileFound);
|
||||
this->CurrentPackageInfo->Directory = init;
|
||||
this->CurrentPackageInfo->Version = this->VersionFound;
|
||||
} else {
|
||||
init = this->Variable + "-NOTFOUND";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user