ENH: Deprecate export_library_dependencies

- Reference export() and install(EXPORT)
  - Fix to support OUTPUT_NAME in simple cases
This commit is contained in:
Brad King 2008-02-20 13:36:38 -05:00
parent cfd65e29da
commit 5e72a0d4e4
2 changed files with 30 additions and 6 deletions

View File

@ -80,8 +80,8 @@ void cmExportLibraryDependenciesCommand::ConstFinalPass() const
// Collect dependency information about all library targets built in // Collect dependency information about all library targets built in
// the project. // the project.
const cmake* cm = this->Makefile->GetCMakeInstance(); cmake* cm = this->Makefile->GetCMakeInstance();
const cmGlobalGenerator* global = cm->GetGlobalGenerator(); cmGlobalGenerator* global = cm->GetGlobalGenerator();
const std::vector<cmLocalGenerator *>& locals = global->GetLocalGenerators(); const std::vector<cmLocalGenerator *>& locals = global->GetLocalGenerators();
std::map<cmStdString, cmStdString> libDepsOld; std::map<cmStdString, cmStdString> libDepsOld;
std::map<cmStdString, cmStdString> libDepsNew; std::map<cmStdString, cmStdString> libDepsNew;
@ -137,9 +137,20 @@ void cmExportLibraryDependenciesCommand::ConstFinalPass() const
ltValue = "optimized"; ltValue = "optimized";
break; break;
} }
valueOld += li->first; std::string lib = li->first;
if(cmTarget* libtgt = global->FindTarget(0, lib.c_str()))
{
// Handle simple output name changes. This command is
// deprecated so we do not support full target name
// translation (which requires per-configuration info).
if(const char* outname = libtgt->GetProperty("OUTPUT_NAME"))
{
lib = outname;
}
}
valueOld += lib;
valueOld += ";"; valueOld += ";";
valueNew += li->first; valueNew += lib;
valueNew += ";"; valueNew += ";";
std::string& ltEntry = libTypes[ltVar]; std::string& ltEntry = libTypes[ltVar];

View File

@ -59,8 +59,7 @@ public:
*/ */
virtual const char* GetTerseDocumentation() virtual const char* GetTerseDocumentation()
{ {
return return "Deprecated. Use INSTALL(EXPORT) or EXPORT command.";
"Write out the dependency information for all targets of a project.";
} }
/** /**
@ -69,6 +68,14 @@ public:
virtual const char* GetFullDocumentation() virtual const char* GetFullDocumentation()
{ {
return return
"This command generates an old-style library dependencies file. "
"Projects requiring CMake 2.6 or later should not use the command. "
"Use instead the install(EXPORT) command to help export targets "
"from an installation tree and the export() command to export targets "
"from a build tree.\n"
"The old-style library dependencies file does not take into account "
"per-configuration names of libraries or the LINK_INTERFACE_LIBRARIES "
"target property.\n"
" export_library_dependencies(<file> [APPEND])\n" " export_library_dependencies(<file> [APPEND])\n"
"Create a file named <file> that can be included into a CMake listfile " "Create a file named <file> that can be included into a CMake listfile "
"with the INCLUDE command. The file will contain a number of SET " "with the INCLUDE command. The file will contain a number of SET "
@ -78,6 +85,12 @@ public:
"specified, the SET commands will be appended to the given file " "specified, the SET commands will be appended to the given file "
"instead of replacing it."; "instead of replacing it.";
} }
/** This command is kept for compatibility with older CMake versions. */
virtual bool IsDiscouraged()
{
return true;
}
cmTypeMacro(cmExportLibraryDependenciesCommand, cmCommand); cmTypeMacro(cmExportLibraryDependenciesCommand, cmCommand);