Jelajahi Sumber

ENH: Deprecate export_library_dependencies

  - Reference export() and install(EXPORT)
  - Fix to support OUTPUT_NAME in simple cases
Brad King 18 tahun lalu
induk
melakukan
5e72a0d4e4
2 mengubah file dengan 30 tambahan dan 6 penghapusan
  1. 15 4
      Source/cmExportLibraryDependencies.cxx
  2. 15 2
      Source/cmExportLibraryDependencies.h

+ 15 - 4
Source/cmExportLibraryDependencies.cxx

@@ -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();
-  const cmGlobalGenerator* global = cm->GetGlobalGenerator();
+  cmake* cm = this->Makefile->GetCMakeInstance();
+  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];

+ 15 - 2
Source/cmExportLibraryDependencies.h

@@ -59,8 +59,7 @@ public:
    */
    */
   virtual const char* GetTerseDocumentation() 
   virtual const char* GetTerseDocumentation() 
     {
     {
-    return 
-      "Write out the dependency information for all targets of a project.";
+    return "Deprecated.  Use INSTALL(EXPORT) or EXPORT command.";
     }
     }
   
   
   /**
   /**
@@ -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);