Browse Source

cmLocalGenerator: Add GetStaticLibraryFlags overload with backtraces

Justin Goshi 6 năm trước cách đây
mục cha
commit
4d5bbb7704
2 tập tin đã thay đổi với 26 bổ sung4 xóa
  1. 23 4
      Source/cmLocalGenerator.cxx
  2. 3 0
      Source/cmLocalGenerator.h

+ 23 - 4
Source/cmLocalGenerator.cxx

@@ -1148,8 +1148,18 @@ void cmLocalGenerator::GetStaticLibraryFlags(std::string& flags,
                                              std::string const& linkLanguage,
                                              cmGeneratorTarget* target)
 {
-  std::string staticLibFlags;
+  std::vector<BT<std::string>> tmpFlags =
+    this->GetStaticLibraryFlags(config, linkLanguage, target);
+  this->AppendFlags(flags, tmpFlags);
+}
+
+std::vector<BT<std::string>> cmLocalGenerator::GetStaticLibraryFlags(
+  std::string const& config, std::string const& linkLanguage,
+  cmGeneratorTarget* target)
+{
+  std::vector<BT<std::string>> flags;
   if (linkLanguage != "Swift") {
+    std::string staticLibFlags;
     this->AppendFlags(
       staticLibFlags,
       this->Makefile->GetSafeDefinition("CMAKE_STATIC_LINKER_FLAGS"));
@@ -1158,7 +1168,12 @@ void cmLocalGenerator::GetStaticLibraryFlags(std::string& flags,
       this->AppendFlags(staticLibFlags,
                         this->Makefile->GetSafeDefinition(name));
     }
+    if (!staticLibFlags.empty()) {
+      flags.emplace_back(std::move(staticLibFlags));
+    }
   }
+
+  std::string staticLibFlags;
   this->AppendFlags(staticLibFlags,
                     target->GetSafeProperty("STATIC_LIBRARY_FLAGS"));
   if (!config.empty()) {
@@ -1166,12 +1181,16 @@ void cmLocalGenerator::GetStaticLibraryFlags(std::string& flags,
     this->AppendFlags(staticLibFlags, target->GetSafeProperty(name));
   }
 
-  flags = std::move(staticLibFlags);
+  if (!staticLibFlags.empty()) {
+    flags.emplace_back(std::move(staticLibFlags));
+  }
 
-  std::vector<std::string> staticLibOpts;
-  target->GetStaticLibraryLinkOptions(staticLibOpts, config, linkLanguage);
+  std::vector<BT<std::string>> staticLibOpts =
+    target->GetStaticLibraryLinkOptions(config, linkLanguage);
   // STATIC_LIBRARY_OPTIONS are escaped.
   this->AppendCompileOptions(flags, staticLibOpts);
+
+  return flags;
 }
 
 void cmLocalGenerator::GetTargetFlags(

+ 3 - 0
Source/cmLocalGenerator.h

@@ -371,6 +371,9 @@ public:
   void GetStaticLibraryFlags(std::string& flags, std::string const& config,
                              std::string const& linkLanguage,
                              cmGeneratorTarget* target);
+  std::vector<BT<std::string>> GetStaticLibraryFlags(
+    std::string const& config, std::string const& linkLanguage,
+    cmGeneratorTarget* target);
 
   /** Fill out these strings for the given target.  Libraries to link,
    *  flags, and linkflags. */