Просмотр исходного кода

BUG: Fixed OUTPUT_NAME feature for VS6 generator. It was not working for Debug builds and was not paying attention to the executable output path.

Brad King 20 лет назад
Родитель
Сommit
05e6c3f3ba
2 измененных файлов с 19 добавлено и 6 удалено
  1. 15 6
      Source/cmLocalVisualStudio6Generator.cxx
  2. 4 0
      Templates/EXEHeader.dsptemplate

+ 15 - 6
Source/cmLocalVisualStudio6Generator.cxx

@@ -964,20 +964,24 @@ void cmLocalVisualStudio6Generator
         }      
       }
     }
+  std::string outputName = "(OUTPUT_NAME is for executables only)";
   std::string extraLinkOptions;
   if(target.GetType() == cmTarget::EXECUTABLE)
     {
     extraLinkOptions = 
       m_Makefile->GetRequiredDefinition("CMAKE_EXE_LINKER_FLAGS");
 
-        
-    // if the executable has an output name then add the appropriate flag
-    if (target.GetProperty("OUTPUT_NAME"))
+    // Use the OUTPUT_NAME property if it was set.  This is supported
+    // only for executables.
+    if(const char* outName = target.GetProperty("OUTPUT_NAME"))
       {
-      libMultiLineOptions += "# ADD LINK32 /out:";
-      libMultiLineOptions += target.GetProperty("OUTPUT_NAME");
-      libMultiLineOptions += " \n";
+      outputName = outName;
+      }
+    else
+      {
+      outputName = target.GetName();
       }
+    outputName += ".exe";
     }
   if(target.GetType() == cmTarget::SHARED_LIBRARY)
     {
@@ -1095,6 +1099,11 @@ void cmLocalVisualStudio6Generator
     cmSystemTools::ReplaceString(line, "CM_MULTILINE_OPTIMIZED_LIBRARIES",
                                  libMultiLineOptimizedOptions.c_str());
 
+    // Replace the template file text OUTPUT_NAME with the real output
+    // name that will be used.  Only the executable template should
+    // have this text.
+    cmSystemTools::ReplaceString(line, "OUTPUT_NAME", outputName.c_str());
+
     cmSystemTools::ReplaceString(line, "BUILD_INCLUDES",
                                  m_IncludeOptions.c_str());
     cmSystemTools::ReplaceString(line, "OUTPUT_LIBNAME",libName);

+ 4 - 0
Templates/EXEHeader.dsptemplate

@@ -69,6 +69,7 @@ BSC32=bscmake.exe
 LINK32=link.exe
 # ADD BASE LINK32  /nologo /subsystem:console /machine:I386 /IGNORE:4089
 # ADD LINK32  /nologo /subsystem:console /machine:I386 /IGNORE:4089
+# ADD LINK32 /out:"EXECUTABLE_OUTPUT_PATHRelease\OUTPUT_NAME"
 CM_MULTILINE_OPTIMIZED_LIBRARIES
 CM_MULTILINE_LIBRARIES
 
@@ -101,6 +102,7 @@ BSC32=bscmake.exe
 LINK32=link.exe
 # ADD BASE LINK32  /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /IGNORE:4089
 # ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /IGNORE:4089
+# ADD LINK32 /out:"EXECUTABLE_OUTPUT_PATHDebug\OUTPUT_NAME"
 CM_MULTILINE_DEBUG_LIBRARIES
 CM_MULTILINE_LIBRARIES_FOR_DEBUG
 
@@ -130,6 +132,7 @@ BSC32=bscmake.exe
 LINK32=link.exe
 # ADD BASE LINK32 /nologo /subsystem:console /machine:I386 /IGNORE:4089
 # ADD LINK32 /nologo /subsystem:console /machine:I386 /IGNORE:4089
+# ADD LINK32 /out:"EXECUTABLE_OUTPUT_PATHMinSizeRel\OUTPUT_NAME"
 CM_MULTILINE_OPTIMIZED_LIBRARIES
 CM_MULTILINE_LIBRARIES
 
@@ -160,6 +163,7 @@ BSC32=bscmake.exe
 LINK32=link.exe
 # ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /IGNORE:4089
 # ADD LINK32  /nologo /subsystem:console /debug /machine:I386 /IGNORE:4089
+# ADD LINK32 /out:"EXECUTABLE_OUTPUT_PATHRelWithDebInfo\OUTPUT_NAME"
 CM_MULTILINE_OPTIMIZED_LIBRARIES
 CM_MULTILINE_LIBRARIES