Sfoglia il codice sorgente

cmLocalGenerator: Clarify AddCompileOptions filter logic

Justin Goshi 6 anni fa
parent
commit
b13207910e
1 ha cambiato i file con 8 aggiunte e 5 eliminazioni
  1. 8 5
      Source/cmLocalGenerator.cxx

+ 8 - 5
Source/cmLocalGenerator.cxx

@@ -838,14 +838,17 @@ void cmLocalGenerator::AddCompileOptions(std::string& flags,
   if (const char* langFlagRegexStr =
         this->Makefile->GetDefinition(langFlagRegexVar)) {
     // Filter flags acceptable to this language.
-    std::vector<std::string> opts;
     if (const char* targetFlags = target->GetProperty("COMPILE_FLAGS")) {
+      std::vector<std::string> opts;
       cmSystemTools::ParseWindowsCommandLine(targetFlags, opts);
+      // Re-escape these flags since COMPILE_FLAGS were already parsed
+      // as a command line above.
+      this->AppendCompileOptions(flags, opts, langFlagRegexStr);
     }
-    target->GetCompileOptions(opts, config, lang);
-    // (Re-)Escape these flags.  COMPILE_FLAGS were already parsed
-    // as a command line above, and COMPILE_OPTIONS are escaped.
-    this->AppendCompileOptions(flags, opts, langFlagRegexStr);
+    std::vector<std::string> targetCompileOpts;
+    target->GetCompileOptions(targetCompileOpts, config, lang);
+    // COMPILE_OPTIONS are escaped.
+    this->AppendCompileOptions(flags, targetCompileOpts, langFlagRegexStr);
   } else {
     // Use all flags.
     if (const char* targetFlags = target->GetProperty("COMPILE_FLAGS")) {