public void analyzeCommands() { bool doneWithCompilerFlags = false; string word = ""; for (int i = 0; i < words.Count; i++) { word = words[i]; if (word.ToLower().Equals("cl") || word.ToLower().Equals("cl.exe")) { } else if (word.Equals("")) { } else if (word.Contains(".c") || word.Contains(".cpp") || word.Contains(".cxx") || word.Contains(".obj") || word.Contains(".lib") || word.Contains(".def")) { doneWithCompilerFlags = true; if (word.Contains(flag_Fo)) { string delim = word[0].ToString(); string flag = delim + flag_Fo; clOptionsLiteral += word + " "; clOptions.Add(flag_Fo); clFiles.Add(word.Substring(flag.Length)); } else { clFiles.Add(word); } } else if (word.Length > 0 && (word[0].Equals('/') || word[0].Equals('-'))) { if (!doneWithCompilerFlags) { if (word.Equals("/D") || word.Equals("-D")) { clDefines.Add(words[i + 1]); i++; } else { clOptionsLiteral += word + " "; clOptions.Add(word.Substring(1)); } } else { containsLinkFlags = true; LinkOptionsLiteral += word + " "; LinkOptionsLiteral_Words.Add(word); linkerOptions.Add(word); } } else { unidentified.Add(word); } } clOptionsLiteral = clOptionsLiteral.Trim(); LinkOptionsLiteral = LinkOptionsLiteral.Trim(); }
public void analyzeCommands() { string currentFlag = ""; bool processingFiles = false; foreach (string word in words) { if (word.StartsWith("/") || word.StartsWith("-")) { if (word.Contains(flag_dll) || word.Contains(flag_dll.ToUpper())) { isDll = true; } else if (word.Contains(flag_exe) || word.Contains(flag_exe.ToUpper())) { isExe = true; } else if (word.Contains(flag_out) || word.Contains(flag_out.ToUpper())) { Output = word.Substring(flag_out.Length + 1); Options.Add(new KeyValuePair <string, string>(flag_out, Output)); currentFlag = flag_out; } else if (word.Contains(flag_def) || word.Contains(flag_def.ToUpper())) { Def = word.Substring(flag_def.Length + 1); Options.Add(new KeyValuePair <string, string>(flag_def, Def)); currentFlag = flag_def; } else if (word.Contains(flag_entry) || word.Contains(flag_entry.ToUpper())) { Entry = word.Substring(flag_entry.Length + 1); Options.Add(new KeyValuePair <string, string>(flag_entry, Entry)); currentFlag = flag_entry; } else { Options.Add(new KeyValuePair <string, string>(word, Entry)); } } else if (word.Contains(".obj")) { Objs.Add(word); processingFiles = true; } else if (word.Contains(".lib")) { Libs.Add(word); processingFiles = true; } else if (word.Contains(".res")) { } else if (currentFlag != "") { } else { //Unrecognized command } if (word.ToLower().Equals("link") || word.ToLower().Equals("link.exe")) { } else if (!processingFiles) { if (!word.Equals("")) { LinkOptionsLiteral += word + " "; LinkOptionsLiteral_Words.Add(word); } } } LinkOptionsLiteral = LinkOptionsLiteral.Trim(); }