Browse Source

ENH: add support for static library property STATIC_LIBRARY_FLAGS

Bill Hoffman 21 năm trước cách đây
mục cha
commit
7b576866b7

+ 1 - 1
Source/cmLocalUnixMakefileGenerator.cxx

@@ -1355,7 +1355,7 @@ void cmLocalUnixMakefileGenerator::OutputStaticLibraryRule(std::ostream& fout,
     createRule = "CMAKE_C_CREATE_STATIC_LIBRARY";
     }  
   std::string linkFlags;
-  const char* targetLinkFlags = t.GetProperty("LINK_FLAGS");
+  const char* targetLinkFlags = t.GetProperty("STATIC_LIBRARY_FLAGS");
   if(targetLinkFlags)
     {
     linkFlags += targetLinkFlags;

+ 14 - 2
Source/cmLocalVisualStudio6Generator.cxx

@@ -979,7 +979,15 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha
     {
     cmSystemTools::Error("Error Reading ", m_DSPHeaderTemplate.c_str());
     }
-
+  std::string staticLibOptions;
+  if(target.GetType() == cmTarget::STATIC_LIBRARY )
+    { 
+    if(const char* libflags = target.GetProperty("STATIC_LIBRARY_FLAGS"))
+      {
+      staticLibOptions = libflags;
+      }
+    }
+  
   std::string line;
   while(cmSystemTools::GetLineFromStream(fin, line))
     {
@@ -992,7 +1000,11 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha
                                  customRuleCode.c_str());
     cmSystemTools::ReplaceString(line, "CMAKE_MFC_FLAG",
                                  mfcFlag);
-
+    if(target.GetType() == cmTarget::STATIC_LIBRARY )
+      {
+      cmSystemTools::ReplaceString(line, "CM_STATIC_LIB_ARGS",
+                                   staticLibOptions.c_str());
+      }
     cmSystemTools::ReplaceString(line, "CM_LIBRARIES",
                                  libOptions.c_str());
     cmSystemTools::ReplaceString(line, "CM_DEBUG_LIBRARIES",

+ 6 - 2
Source/cmLocalVisualStudio7Generator.cxx

@@ -534,8 +534,12 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
       std::string libpath = m_LibraryOutputPath + 
         "$(OutDir)/" + libName + debugPostfix + ".lib";
       fout << "\t\t\t<Tool\n"
-           << "\t\t\t\tName=\"VCLibrarianTool\"\n"
-           << "\t\t\t\t\tOutputFile=\"" 
+           << "\t\t\t\tName=\"VCLibrarianTool\"\n";
+      if(const char* libflags = target.GetProperty("STATIC_LIBRARY_FLAGS"))
+        {
+        fout << "\t\t\t\tAdditionalOptions=\"" << libflags << "\"\n";
+        }
+      fout << "\t\t\t\tOutputFile=\"" 
            << this->ConvertToXMLOutputPathSingle(libpath.c_str()) << ".\"/>\n";
       break;
     }

+ 4 - 4
Templates/staticLibHeader.dsptemplate

@@ -65,7 +65,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo
 LIB32=link.exe -lib
 # ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
+# ADD LIB32 /nologo CM_STATIC_LIB_ARGS
 
 CMAKE_CUSTOM_RULE_CODE
 
@@ -93,7 +93,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo
 LIB32=link.exe -lib
 # ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"LIBRARY_OUTPUT_PATHDebug\OUTPUT_LIBNAMEDEBUG_POSTFIX.lib"
+# ADD LIB32 /nologo CM_STATIC_LIB_ARGS /out:"LIBRARY_OUTPUT_PATHDebug\OUTPUT_LIBNAMEDEBUG_POSTFIX.lib"
 
 CMAKE_CUSTOM_RULE_CODE
 
@@ -122,7 +122,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo
 LIB32=link.exe -lib
 # ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
+# ADD LIB32 /nologo CM_STATIC_LIB_ARGS
 
 CMAKE_CUSTOM_RULE_CODE
 
@@ -150,7 +150,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo
 LIB32=link.exe -lib
 # ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
+# ADD LIB32 /nologo CM_STATIC_LIB_ARGS
 
 CMAKE_CUSTOM_RULE_CODE