浏览代码

BUG: When using link scripts use native shell escapes instead of makefile shell escapes because the script is not interpreted by a make tool.

Brad King 19 年之前
父节点
当前提交
fb7c7675f5
共有 1 个文件被更改,包括 15 次插入1 次删除
  1. 15 1
      Source/cmMakefileLibraryTargetGenerator.cxx

+ 15 - 1
Source/cmMakefileLibraryTargetGenerator.cxx

@@ -537,7 +537,21 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
   objdir += this->Target->GetName();
   objdir += ".dir";
   vars.ObjectDir = objdir.c_str(); 
-  vars.Target = targetOutPathReal.c_str();
+  std::string targetLinkScriptPathReal;
+  if(useLinkScript)
+    {
+    // Paths in the link script are interpreted directly by the shell
+    // and not make.
+    targetLinkScriptPathReal =
+      this->Convert(targetFullPathReal.c_str(),
+                    cmLocalGenerator::START_OUTPUT,
+                    cmLocalGenerator::SHELL);
+    vars.Target = targetLinkScriptPathReal.c_str();
+    }
+  else
+    {
+    vars.Target = targetOutPathReal.c_str();
+    }
   std::string linkString = linklibs.str();
   vars.LinkLibraries = linkString.c_str();
   vars.ObjectsQuoted = buildObjs.c_str();