浏览代码

Add check so that java projects build without C++

Andy Cedilnik 23 年之前
父节点
当前提交
682e2c7b8b

+ 36 - 31
Source/cmGlobalVisualStudio7Generator.cxx

@@ -153,42 +153,47 @@ void cmGlobalVisualStudio7Generator::SetupTests()
 void cmGlobalVisualStudio7Generator::GenerateConfigurations()
 {
   // process the configurations
-  std::string configTypes = 
-    m_CMakeInstance->GetCacheDefinition("CMAKE_CONFIGURATION_TYPES");
-  std::string::size_type start = 0;
-  std::string::size_type endpos = 0;
-  while(endpos != std::string::npos)
+  const char* ct 
+    = m_CMakeInstance->GetCacheDefinition("CMAKE_CONFIGURATION_TYPES");
+  if ( ct )
     {
-    endpos = configTypes.find(' ', start);
-    std::string config;
-    std::string::size_type len;
-    if(endpos != std::string::npos)
-      {
-      len = endpos - start;
-      }
-    else
-      {
-      len = configTypes.size() - start;
-      }
-    config = configTypes.substr(start, len);
-    if(config == "Debug" || config == "Release" ||
-       config == "MinSizeRel" || config == "RelWithDebInfo")
+    std::string configTypes = ct;
+    
+    std::string::size_type start = 0;
+    std::string::size_type endpos = 0;
+    while(endpos != std::string::npos)
       {
-      // only add unique configurations
-      if(std::find(m_Configurations.begin(),
-                   m_Configurations.end(), config) == m_Configurations.end())
+      endpos = configTypes.find(' ', start);
+      std::string config;
+      std::string::size_type len;
+      if(endpos != std::string::npos)
         {
-        m_Configurations.push_back(config);
+        len = endpos - start;
         }
+      else
+        {
+        len = configTypes.size() - start;
+        }
+      config = configTypes.substr(start, len);
+      if(config == "Debug" || config == "Release" ||
+         config == "MinSizeRel" || config == "RelWithDebInfo")
+        {
+        // only add unique configurations
+        if(std::find(m_Configurations.begin(),
+                     m_Configurations.end(), config) == m_Configurations.end())
+          {
+          m_Configurations.push_back(config);
+          }
+        }
+      else
+        {
+        cmSystemTools::Error(
+          "Invalid configuration type in CMAKE_CONFIGURATION_TYPES: ",
+          config.c_str(),
+          " (Valid types are Debug,Release,MinSizeRel,RelWithDebInfo)");
+        }
+      start = endpos+1;
       }
-    else
-      {
-      cmSystemTools::Error(
-        "Invalid configuration type in CMAKE_CONFIGURATION_TYPES: ",
-        config.c_str(),
-        " (Valid types are Debug,Release,MinSizeRel,RelWithDebInfo)");
-      }
-    start = endpos+1;
     }
   if(m_Configurations.size() == 0)
     {

+ 46 - 43
Source/cmLocalVisualStudio6Generator.cxx

@@ -775,47 +775,50 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha
 
   while(fin)
     {
-      fin.getline(buffer, 2048);
-      std::string line = buffer;
-      const char* mfcFlag = m_Makefile->GetDefinition("CMAKE_MFC_FLAG");
-      if(!mfcFlag)
-        {
-        mfcFlag = "0";
-        }
-      cmSystemTools::ReplaceString(line, "CMAKE_CUSTOM_RULE_CODE",
-                                   customRuleCode.c_str());
-      cmSystemTools::ReplaceString(line, "CMAKE_MFC_FLAG",
-                                   mfcFlag);
-      cmSystemTools::ReplaceString(line, "CM_LIBRARIES",
-                                   libOptions.c_str());
-      cmSystemTools::ReplaceString(line, "CM_DEBUG_LIBRARIES",
-                                   libDebugOptions.c_str());
-      cmSystemTools::ReplaceString(line, "CM_OPTIMIZED_LIBRARIES",
-                                   libOptimizedOptions.c_str());
-
-      cmSystemTools::ReplaceString(line, "CM_MULTILINE_LIBRARIES",
-                                   libMultiLineOptions.c_str());
-      cmSystemTools::ReplaceString(line, "CM_MULTILINE_DEBUG_LIBRARIES",
-                                   libMultiLineDebugOptions.c_str());
-      cmSystemTools::ReplaceString(line, "CM_MULTILINE_OPTIMIZED_LIBRARIES",
-                                   libMultiLineOptimizedOptions.c_str());
-
-      cmSystemTools::ReplaceString(line, "BUILD_INCLUDES",
-                                   m_IncludeOptions.c_str());
-      cmSystemTools::ReplaceString(line, "OUTPUT_LIBNAME",libName);
-      // because LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH 
-      // are already quoted in the template file,
-      // we need to remove the quotes here, we still need
-      // to convert to output path for unix to win32 conversion
-      cmSystemTools::ReplaceString(line, "LIBRARY_OUTPUT_PATH",
-                                   removeQuotes(
-                                     cmSystemTools::ConvertToOutputPath(libPath.c_str())).c_str());
-      cmSystemTools::ReplaceString(line, "EXECUTABLE_OUTPUT_PATH",
-                                   removeQuotes(
-                                     cmSystemTools::ConvertToOutputPath(exePath.c_str())).c_str());
-      cmSystemTools::ReplaceString(line, 
-                                   "EXTRA_DEFINES", 
-                                   m_Makefile->GetDefineFlags());
+    fin.getline(buffer, 2048);
+    std::string line = buffer;
+    const char* mfcFlag = m_Makefile->GetDefinition("CMAKE_MFC_FLAG");
+    if(!mfcFlag)
+      {
+      mfcFlag = "0";
+      }
+    cmSystemTools::ReplaceString(line, "CMAKE_CUSTOM_RULE_CODE",
+                                 customRuleCode.c_str());
+    cmSystemTools::ReplaceString(line, "CMAKE_MFC_FLAG",
+                                 mfcFlag);
+    cmSystemTools::ReplaceString(line, "CM_LIBRARIES",
+                                 libOptions.c_str());
+    cmSystemTools::ReplaceString(line, "CM_DEBUG_LIBRARIES",
+                                 libDebugOptions.c_str());
+    cmSystemTools::ReplaceString(line, "CM_OPTIMIZED_LIBRARIES",
+                                 libOptimizedOptions.c_str());
+
+    cmSystemTools::ReplaceString(line, "CM_MULTILINE_LIBRARIES",
+                                 libMultiLineOptions.c_str());
+    cmSystemTools::ReplaceString(line, "CM_MULTILINE_DEBUG_LIBRARIES",
+                                 libMultiLineDebugOptions.c_str());
+    cmSystemTools::ReplaceString(line, "CM_MULTILINE_OPTIMIZED_LIBRARIES",
+                                 libMultiLineOptimizedOptions.c_str());
+
+    cmSystemTools::ReplaceString(line, "BUILD_INCLUDES",
+                                 m_IncludeOptions.c_str());
+    cmSystemTools::ReplaceString(line, "OUTPUT_LIBNAME",libName);
+    // because LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH 
+    // are already quoted in the template file,
+    // we need to remove the quotes here, we still need
+    // to convert to output path for unix to win32 conversion
+    cmSystemTools::ReplaceString(line, "LIBRARY_OUTPUT_PATH",
+                                 removeQuotes(
+                                   cmSystemTools::ConvertToOutputPath(libPath.c_str())).c_str());
+    cmSystemTools::ReplaceString(line, "EXECUTABLE_OUTPUT_PATH",
+                                 removeQuotes(
+                                   cmSystemTools::ConvertToOutputPath(exePath.c_str())).c_str());
+    cmSystemTools::ReplaceString(line, 
+                                 "EXTRA_DEFINES", 
+                                 m_Makefile->GetDefineFlags());
+    cmGlobalGenerator* gen = this->GetGlobalGenerator();
+    if ( gen->GetLanguageEnabled("C") ||gen->GetLanguageEnabled("CXX") )
+      {
       std::string flags = m_Makefile->GetDefinition("CMAKE_CXX_FLAGS_RELEASE");
       flags += " -DCMAKE_INTDIR=\\\"Release\\\"";
       cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS_RELEASE", flags.c_str());
@@ -831,8 +834,8 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha
       cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS",
                                    m_Makefile->
                                    GetDefinition("CMAKE_CXX_FLAGS"));
-      
-      fout << line.c_str() << std::endl;
+      }
+    fout << line.c_str() << std::endl;
     }
 }
 

+ 4 - 1
Source/cmLocalVisualStudio7Generator.cxx

@@ -329,7 +329,10 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
     }
   fout << "\t\t\t\tAssemblerListingLocation=\"" << configName << "\"\n";
   fout << "\t\t\t\tObjectFile=\"" << configName << "\\\"\n";
-  fout << "\t\t\t\tWarningLevel=\"" << m_Makefile->GetDefinition("CMAKE_CXX_WARNING_LEVEL") << "\"\n";
+  if ( m_Makefile->GetDefinition("CMAKE_CXX_WARNING_LEVEL") )
+    {
+    fout << "\t\t\t\tWarningLevel=\"" << m_Makefile->GetDefinition("CMAKE_CXX_WARNING_LEVEL") << "\"\n";
+    }
   fout << "\t\t\t\tDetect64BitPortabilityProblems=\"TRUE\"\n"
        << "\t\t\t\tDebugInformationFormat=\"3\"";
   fout << "/>\n";  // end of <Tool Name=VCCLCompilerTool