void BuildLib(String lib, ICollection <String> objs) { if (Ar.IsNullOrEmpty()) { Ar = @"D:\Keil\ARM\ARMCC\bin\armar.exe"; } lib.EnsureDirectory(true); var sb = new StringBuilder(); sb.Append("--create -c"); sb.AppendFormat(" -r \"{0}\"", lib); foreach (var item in objs) { sb.Append(" "); sb.Append(item); Console.WriteLine(item); } var rs = Ar.Run(sb.ToString(), 3000, XTrace.WriteLine); }
/// <summary>编译静态库</summary> /// <param name="name"></param> public Int32 BuildLib(String name = null) { if (Objs.Count == 0) { return(0); } var ext = Path.GetExtension(name); if (!ext.IsNullOrEmpty()) { name = name.TrimEnd(ext); } name = GetOutputName(name); XTrace.WriteLine("链接:{0}", name); if (ext.IsNullOrEmpty()) { ext = ".lib"; } var lib = name.EnsureEnd(ext); var sb = new StringBuilder(); sb.Append(OnBuildLib(lib)); Console.Write("链接参数:"); Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine(sb); Console.ResetColor(); if (Objs.Count < 6) { Console.Write("使用对象文件:"); } foreach (var item in Objs) { sb.Append(" "); sb.Append(item); if (Objs.Count < 6) { Console.Write(" {0}", item); } } if (Objs.Count < 6) { Console.WriteLine(); } LoadLib(sb); var rs = Ar.Run(sb.ToString(), 3000, WriteLog); XTrace.WriteLine("链接完成 {0} {1}", rs, lib); if (name.Contains("\\")) { name = name.Substring("\\"); } var p = name.LastIndexOf("\\"); if (p >= 0) { name = name.Substring(p + 1); } name = name.Replace("_", " "); if (rs == 0) { "链接静态库{0}完成".F(name).SpeakAsync(); } else { "链接静态库{0}失败".F(name).SpeakAsync(); } return(rs); }