Browse Source

BUG: fix for build out of dir for windows

Bill Hoffman 23 years ago
parent
commit
c1c3149d16
2 changed files with 34 additions and 0 deletions
  1. 29 0
      Source/cmLocalUnixMakefileGenerator.cxx
  2. 5 0
      Source/cmLocalUnixMakefileGenerator.h

+ 29 - 0
Source/cmLocalUnixMakefileGenerator.cxx

@@ -1222,12 +1222,41 @@ void cmLocalUnixMakefileGenerator::OutputDependLibs(std::ostream& fout)
     }
 }
 
+void cmLocalUnixMakefileGenerator::OutputBuildTargetInDirWindows(std::ostream& fout,
+                                                                 const char* path,
+                                                                 const char* library,
+                                                                 const char* fullpath,
+                                                                 const char* libOutPath)
+{
+  const char* makeTarget = library;
+  std::string currentDir = 
+    cmSystemTools::ConvertToOutputPath(m_Makefile->GetCurrentOutputDirectory());
+  std::string wpath = cmSystemTools::ConvertToOutputPath(path);
+  std::string wfullpath = cmSystemTools::ConvertToOutputPath(fullpath);
+  if(libOutPath && strcmp( libOutPath, "" ) != 0)
+    {
+    makeTarget = wfullpath.c_str();
+    }
+  fout << wfullpath
+       << ":\n\tcd " << wpath  << "\n"
+       << "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) cmake.depends\n"
+       << "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) cmake.check_depends\n"
+       << "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) -f cmake.check_depends\n"
+       << "\t$(MAKE) $(MAKESILENT) " << makeTarget
+       << "\n\tcd " << currentDir << "\n";
+}
+
 void cmLocalUnixMakefileGenerator::OutputBuildTargetInDir(std::ostream& fout,
                                                      const char* path,
                                                      const char* library,
                                                      const char* fullpath,
                                                      const char* outputPath)
 {
+  if(m_WindowsShell)
+    {
+    this->OutputBuildTargetInDirWindows(fout, path, library, fullpath, outputPath);
+    return;
+    }
   const char* makeTarget = library;
   if(outputPath && strcmp( outputPath, "" ) != 0)
     {

+ 5 - 0
Source/cmLocalUnixMakefileGenerator.h

@@ -164,6 +164,11 @@ protected:
                               const char* command2 = 0,
                               const char* command3 = 0,
                               const char* command4 = 0);
+  virtual void OutputBuildTargetInDirWindows(std::ostream& fout,
+                                      const char* path,
+                                      const char* library,
+                                      const char* fullpath,
+                                      const char* outputPath);
   virtual void OutputBuildTargetInDir(std::ostream& fout,
                                       const char* path,
                                       const char* library,