|
@@ -1196,6 +1196,8 @@ bool cmInstallCommand::HandleExportMode(std::vector<std::string> const& args)
|
|
|
cmInstallCommandArguments ica(this->DefaultComponentName);
|
|
|
cmCAString exp(&ica.Parser, "EXPORT");
|
|
|
cmCAString name_space(&ica.Parser, "NAMESPACE", &ica.ArgumentGroup);
|
|
|
+ cmCAEnabler exportOld(&ica.Parser, "EXPORT_LINK_INTERFACE_LIBRARIES",
|
|
|
+ &ica.ArgumentGroup);
|
|
|
cmCAString filename(&ica.Parser, "FILE", &ica.ArgumentGroup);
|
|
|
exp.Follows(0);
|
|
|
|
|
@@ -1268,15 +1270,40 @@ bool cmInstallCommand::HandleExportMode(std::vector<std::string> const& args)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ cmExportSet *exportSet = this->Makefile->GetLocalGenerator()
|
|
|
+ ->GetGlobalGenerator()->GetExportSets()[exp.GetString()];
|
|
|
+ if (exportOld.IsEnabled())
|
|
|
+ {
|
|
|
+ for(std::vector<cmTargetExport*>::const_iterator
|
|
|
+ tei = exportSet->GetTargetExports()->begin();
|
|
|
+ tei != exportSet->GetTargetExports()->end(); ++tei)
|
|
|
+ {
|
|
|
+ cmTargetExport const* te = *tei;
|
|
|
+ const bool newCMP0022Behavior =
|
|
|
+ te->Target->GetPolicyStatusCMP0022() != cmPolicies::WARN
|
|
|
+ && te->Target->GetPolicyStatusCMP0022() != cmPolicies::OLD;
|
|
|
+
|
|
|
+ if(!newCMP0022Behavior)
|
|
|
+ {
|
|
|
+ cmOStringStream e;
|
|
|
+ e << "INSTALL(EXPORT) given keyword \""
|
|
|
+ << "EXPORT_LINK_INTERFACE_LIBRARIES" << "\", but target \""
|
|
|
+ << te->Target->GetName()
|
|
|
+ << "\" does not have policy CMP0022 set to NEW.";
|
|
|
+ this->SetError(e.str().c_str());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// Create the export install generator.
|
|
|
cmInstallExportGenerator* exportGenerator =
|
|
|
new cmInstallExportGenerator(
|
|
|
- this->Makefile->GetLocalGenerator()
|
|
|
- ->GetGlobalGenerator()->GetExportSets()[exp.GetString()],
|
|
|
+ exportSet,
|
|
|
ica.GetDestination().c_str(),
|
|
|
ica.GetPermissions().c_str(), ica.GetConfigurations(),
|
|
|
ica.GetComponent().c_str(), fname.c_str(),
|
|
|
- name_space.GetCString(), this->Makefile);
|
|
|
+ name_space.GetCString(), exportOld.IsEnabled(), this->Makefile);
|
|
|
this->Makefile->AddInstallGenerator(exportGenerator);
|
|
|
|
|
|
return true;
|