Explorar el Código

BUG: Fix install_name_tool update of the executable in an installed bundle on OSX. This addresses bug#4534.

Brad King hace 18 años
padre
commit
39d1343896
Se han modificado 1 ficheros con 10 adiciones y 6 borrados
  1. 10 6
      Source/cmInstallTargetGenerator.cxx

+ 10 - 6
Source/cmInstallTargetGenerator.cxx

@@ -178,6 +178,13 @@ cmInstallTargetGenerator
                              const char* config,
                              Indent const& indent)
 {
+  // Compute the full path to the main installed file for this target.
+  std::string toFullPath = "$ENV{DESTDIR}";
+  toFullPath += this->Destination;
+  toFullPath += "/";
+  toFullPath += this->GetInstallFilename(this->Target, config,
+                                         this->ImportLibrary, false);
+
   // Compute the list of files to install for this target.
   std::vector<std::string> files;
   std::string literal_args;
@@ -214,6 +221,9 @@ cmInstallTargetGenerator
         from1 += ".app";
         files.push_back(from1);
         type = cmTarget::INSTALL_DIRECTORY;
+        toFullPath += ".app/Contents/MacOS/";
+        toFullPath += this->GetInstallFilename(this->Target, config,
+                                               this->ImportLibrary, false);
         literal_args += " USE_SOURCE_PERMISSIONS";
         // TODO: Still need to apply install_name_tool and stripping
         // to binaries inside bundle.
@@ -284,12 +294,6 @@ cmInstallTargetGenerator
                        no_rename, literal_args.c_str(),
                        indent);
 
-  std::string toFullPath = "$ENV{DESTDIR}";
-  toFullPath += this->Destination;
-  toFullPath += "/";
-  toFullPath += this->GetInstallFilename(this->Target, config,
-                                         this->ImportLibrary, false);
-
   os << indent << "IF(EXISTS \"" << toFullPath << "\")\n";
   this->AddInstallNamePatchRule(os, indent.Next(), config, toFullPath);
   this->AddRanlibRule(os, indent.Next(), type, toFullPath);