FeatureSummary: Don't list transitive package dependencies
Set a global property in the find_package implementation. Track and reset that property in the find_dependency macro. Read the property in FeatureSummary when determining whether to print output. This means that packages which are found only as dependencies are not listed by FeatureSummary, but if a project uses find_package elsewhere directly, then it will be listed by FeatureSummary. Suggested-by: Alex Merry http://thread.gmane.org/gmane.comp.kde.devel.frameworks/10640
This commit is contained in:
parent
cd711ed052
commit
a6971f6510
|
@ -45,7 +45,16 @@ macro(find_dependency dep)
|
||||||
set(required_arg REQUIRED)
|
set(required_arg REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
get_property(alreadyTransitive GLOBAL PROPERTY
|
||||||
|
_CMAKE_${dep}_TRANSITIVE_DEPENDENCY
|
||||||
|
)
|
||||||
|
|
||||||
find_package(${dep} ${version} ${exact_arg} ${quiet_arg} ${required_arg})
|
find_package(${dep} ${version} ${exact_arg} ${quiet_arg} ${required_arg})
|
||||||
|
|
||||||
|
if(NOT DEFINED alreadyTransitive OR alreadyTransitive)
|
||||||
|
set_property(GLOBAL PROPERTY _CMAKE_${dep}_TRANSITIVE_DEPENDENCY TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (NOT ${dep}_FOUND)
|
if (NOT ${dep}_FOUND)
|
||||||
set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency ${dep} could not be found.")
|
set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency ${dep} could not be found.")
|
||||||
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False)
|
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False)
|
||||||
|
|
|
@ -376,6 +376,12 @@ function(_FS_GET_FEATURE_SUMMARY _property _var _includeQuiet)
|
||||||
set(includeThisOne FALSE)
|
set(includeThisOne FALSE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
get_property(_isTransitiveDepend
|
||||||
|
GLOBAL PROPERTY _CMAKE_${_currentFeature}_TRANSITIVE_DEPENDENCY
|
||||||
|
)
|
||||||
|
if(_isTransitiveDepend)
|
||||||
|
set(includeThisOne FALSE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(includeThisOne)
|
if(includeThisOne)
|
||||||
|
|
||||||
|
|
|
@ -1043,6 +1043,12 @@ void cmFindPackageCommand::AppendToFoundProperty(bool found)
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmFindPackageCommand::AppendSuccessInformation()
|
void cmFindPackageCommand::AppendSuccessInformation()
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
std::string transitivePropName = "_CMAKE_";
|
||||||
|
transitivePropName += this->Name + "_TRANSITIVE_DEPENDENCY";
|
||||||
|
this->Makefile->GetCMakeInstance()
|
||||||
|
->SetProperty(transitivePropName.c_str(), "False");
|
||||||
|
}
|
||||||
std::string found = this->Name;
|
std::string found = this->Name;
|
||||||
found += "_FOUND";
|
found += "_FOUND";
|
||||||
std::string upperFound = cmSystemTools::UpperCase(found);
|
std::string upperFound = cmSystemTools::UpperCase(found);
|
||||||
|
|
Loading…
Reference in New Issue