Prechádzať zdrojové kódy

BUG: Directory installation pattern matching should be case insensitive on some platforms.

Brad King 19 rokov pred
rodič
commit
c99dcc30be
2 zmenil súbory, kde vykonal 12 pridanie a 0 odobranie
  1. 7 0
      Source/cmFileCommand.cxx
  2. 5 0
      Source/cmInstallCommand.cxx

+ 7 - 0
Source/cmFileCommand.cxx

@@ -400,6 +400,13 @@ public:
   // Get the properties from rules matching this input file.
   MatchProperties CollectMatchProperties(const char* file)
     {
+    // Match rules are case-insensitive on some platforms.
+#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
+    std::string lower = cmSystemTools::LowerCase(file);
+    file = lower.c_str();
+#endif
+
+    // Collect properties from all matching rules.
     MatchProperties result;
     for(std::vector<MatchRule>::iterator mr = this->MatchRules.begin();
         mr != this->MatchRules.end(); ++mr)

+ 5 - 0
Source/cmInstallCommand.cxx

@@ -938,7 +938,12 @@ cmInstallCommand::HandleDirectoryMode(std::vector<std::string> const& args)
     else if(doing_regex)
       {
       literal_args += " REGEX \"";
+    // Match rules are case-insensitive on some platforms.
+#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
+      std::string regex = cmSystemTools::LowerCase(args[i]);
+#else
       std::string regex = args[i];
+#endif
       cmSystemTools::ReplaceString(regex, "\\", "\\\\");
       literal_args += regex;
       literal_args += "\"";