瀏覽代碼

ENH: fix adding of rc files

Bill Hoffman 20 年之前
父節點
當前提交
c2ad3e4afc
共有 1 個文件被更改,包括 34 次插入18 次删除
  1. 34 18
      Source/cmLocalVisualStudio7Generator.cxx

+ 34 - 18
Source/cmLocalVisualStudio7Generator.cxx

@@ -37,6 +37,9 @@ void cmLocalVisualStudio7Generator::Generate()
   std::set<cmStdString> lang;
   lang.insert("C");
   lang.insert("CXX");
+  lang.insert("RC");
+  lang.insert("IDL");
+  lang.insert("DEF");
   this->CreateCustomTargetsAndCommands(lang);
   this->OutputVCProjFile();
 }
@@ -343,24 +346,27 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
                            target.GetName());
       return;
       }
-    std::string baseFlagVar = "CMAKE_";
-    baseFlagVar += linkLanguage;
-    baseFlagVar += "_FLAGS";
-    flags = m_Makefile->GetRequiredDefinition(baseFlagVar.c_str());
-    
-    std::string flagVar = baseFlagVar + "_RELEASE";
-    flagsRelease += m_Makefile->GetRequiredDefinition(flagVar.c_str());
-
-    flagVar = baseFlagVar + "_MINSIZEREL";
-    flagsMinSize += m_Makefile->GetRequiredDefinition(flagVar.c_str());
-
-    flagVar = baseFlagVar + "_DEBUG";
-    flagsDebug += m_Makefile->GetRequiredDefinition(flagVar.c_str());
-
-    flagVar = baseFlagVar + "_RELWITHDEBINFO";
-    flagsDebugRel += m_Makefile->GetRequiredDefinition(flagVar.c_str());
+    if(!(strcmp(linkLanguage, "RC") == 0 || strcmp(linkLanguage, "DEF") == 0))
+      {    
+      std::string baseFlagVar = "CMAKE_";
+      baseFlagVar += linkLanguage;
+      baseFlagVar += "_FLAGS";
+      flags = m_Makefile->GetRequiredDefinition(baseFlagVar.c_str());
+      
+      std::string flagVar = baseFlagVar + "_RELEASE";
+      flagsRelease += m_Makefile->GetRequiredDefinition(flagVar.c_str());
+      
+      flagVar = baseFlagVar + "_MINSIZEREL";
+      flagsMinSize += m_Makefile->GetRequiredDefinition(flagVar.c_str());
+      
+      flagVar = baseFlagVar + "_DEBUG";
+      flagsDebug += m_Makefile->GetRequiredDefinition(flagVar.c_str());
+      
+      flagVar = baseFlagVar + "_RELWITHDEBINFO";
+      flagsDebugRel += m_Makefile->GetRequiredDefinition(flagVar.c_str());
+      }
     }
-
+  
   std::string programDatabase;
   const char* pre = "WIN32,_DEBUG,_WINDOWS";
   std::string debugPostfix = "";
@@ -1037,10 +1043,20 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout,
         else if(compileFlags.size() || additionalDeps.length())
           {
           const char* aCompilerTool = "VCCLCompilerTool";
-          if((*sf)->GetSourceExtension() == "idl")
+          std::string ext = (*sf)->GetSourceExtension();
+          ext = cmSystemTools::LowerCase(ext);
+          if(ext == "idl")
             {
             aCompilerTool = "VCMIDLTool";
             }
+          if(ext == "rc")
+            {
+            aCompilerTool = "VCResourceCompilerTool";
+            }
+          if(ext == "def")
+            {
+            aCompilerTool = "VCCustomBuildTool";
+            }
           for(std::vector<std::string>::iterator i = configs->begin(); 
               i != configs->end(); ++i)
             {