|
|
@@ -83,10 +83,12 @@ class cmTargetInternals
|
|
|
public:
|
|
|
cmTargetInternals()
|
|
|
{
|
|
|
+ this->PolicyWarnedCMP0022 = false;
|
|
|
this->SourceFileFlagsConstructed = false;
|
|
|
}
|
|
|
cmTargetInternals(cmTargetInternals const& r)
|
|
|
{
|
|
|
+ this->PolicyWarnedCMP0022 = false;
|
|
|
this->SourceFileFlagsConstructed = false;
|
|
|
// Only some of these entries are part of the object state.
|
|
|
// Others not copied here are result caches.
|
|
|
@@ -109,6 +111,7 @@ public:
|
|
|
typedef std::map<TargetConfigPair, OptionalLinkInterface>
|
|
|
LinkInterfaceMapType;
|
|
|
LinkInterfaceMapType LinkInterfaceMap;
|
|
|
+ bool PolicyWarnedCMP0022;
|
|
|
|
|
|
typedef std::map<cmStdString, cmTarget::OutputInfo> OutputInfoMapType;
|
|
|
OutputInfoMapType OutputInfoMap;
|
|
|
@@ -6433,7 +6436,8 @@ bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if(explicitLibraries && this->PolicyStatusCMP0022 == cmPolicies::WARN)
|
|
|
+ if(explicitLibraries && this->PolicyStatusCMP0022 == cmPolicies::WARN &&
|
|
|
+ !this->Internal->PolicyWarnedCMP0022)
|
|
|
{
|
|
|
// Compare the explicitly set old link interface properties to the
|
|
|
// preferred new link interface property one and warn if different.
|
|
|
@@ -6455,6 +6459,7 @@ bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
|
|
|
linkIfaceProp << ":\n"
|
|
|
" " << (explicitLibraries ? explicitLibraries : "(empty)") << "\n";
|
|
|
this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str());
|
|
|
+ this->Internal->PolicyWarnedCMP0022 = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -6544,7 +6549,8 @@ bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
|
|
|
iface.Languages = impl->Languages;
|
|
|
}
|
|
|
|
|
|
- if(this->PolicyStatusCMP0022 == cmPolicies::WARN)
|
|
|
+ if(this->PolicyStatusCMP0022 == cmPolicies::WARN &&
|
|
|
+ !this->Internal->PolicyWarnedCMP0022)
|
|
|
{
|
|
|
// Compare the link implementation fallback link interface to the
|
|
|
// preferred new link interface property and warn if different.
|
|
|
@@ -6603,6 +6609,7 @@ bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
|
|
|
"Link implementation:\n"
|
|
|
" " << oldLibraries << "\n";
|
|
|
this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str());
|
|
|
+ this->Internal->PolicyWarnedCMP0022 = true;
|
|
|
}
|
|
|
}
|
|
|
}
|