private static async Task <SourceFile> createSourceFileAsync(string filePath, Configuration targetConfig, dynamic project) { // TODO: //Debug.Assert(isVisualCppProject((object)project)); try { await Instance.JoinableTaskFactory.SwitchToMainThreadAsync(); var configurationName = targetConfig.ConfigurationName; dynamic config = project.Configurations.Item(configurationName); String toolSetName = config.PlatformToolsetShortName; if (String.IsNullOrEmpty(toolSetName)) { toolSetName = config.PlatformToolsetFriendlyName; } String projectDirectory = project.ProjectDirectory; String projectName = project.Name; SourceFile sourceForAnalysis = new SourceFile(filePath, projectDirectory, projectName, toolSetName); dynamic toolsCollection = config.Tools; foreach (var tool in toolsCollection) { // Project-specific includes if (implementsInterface(tool, "Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool")) { String includes = tool.FullIncludePath; String definitions = tool.PreprocessorDefinitions; String macrosToUndefine = tool.UndefinePreprocessorDefinitions; String[] includePaths = includes.Split(';'); for (int i = 0; i < includePaths.Length; ++i) { includePaths[i] = Environment.ExpandEnvironmentVariables(config.Evaluate(includePaths[i])); } ; sourceForAnalysis.addIncludePaths(includePaths); sourceForAnalysis.addMacros(definitions.Split(';')); sourceForAnalysis.addMacrosToUndefine(macrosToUndefine.Split(';')); break; } } return(sourceForAnalysis); } catch (Exception ex) { DebugTracer.Trace(ex); return(null); } }
SourceFile createSourceFile(string filePath, Configuration targetConfig, dynamic project) { Debug.Assert(isVisualCppProject((object)project)); try { var configurationName = targetConfig.ConfigurationName; dynamic config = project.Configurations.Item(configurationName); String toolSetName = config.PlatformToolsetShortName; if (String.IsNullOrEmpty(toolSetName)) { toolSetName = config.PlatformToolsetFriendlyName; } String projectDirectory = project.ProjectDirectory; String projectName = project.Name; SourceFile sourceForAnalysis = new SourceFile(filePath, projectDirectory, projectName, toolSetName); dynamic toolsCollection = config.Tools; foreach (var tool in toolsCollection) { // Project-specific includes Type toolType = tool.GetType(); var compilerToolInterface = toolType.GetInterface("Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool"); if (compilerToolInterface != null) { String includes = tool.FullIncludePath; String definitions = tool.PreprocessorDefinitions; String macrosToUndefine = tool.UndefinePreprocessorDefinitions; String[] includePaths = includes.Split(';'); for (int i = 0; i < includePaths.Length; ++i) { includePaths[i] = config.Evaluate(includePaths[i]); } sourceForAnalysis.addIncludePaths(includePaths); sourceForAnalysis.addMacros(definitions.Split(';')); sourceForAnalysis.addMacrosToUndefine(macrosToUndefine.Split(';')); break; } } return(sourceForAnalysis); } catch (System.Exception ex) { DebugTracer.Trace(ex); return(null); } }
SourceFile createSourceFile(string filePath, Configuration targetConfig, dynamic project) { Debug.Assert(isVisualCppProject((object)project)); try { var configurationName = targetConfig.ConfigurationName; dynamic config = project.Configurations.Item(configurationName); String toolSetName = config.PlatformToolsetShortName; if (String.IsNullOrEmpty(toolSetName)) toolSetName = config.PlatformToolsetFriendlyName; String projectDirectory = project.ProjectDirectory; String projectName = project.Name; SourceFile sourceForAnalysis = new SourceFile(filePath, projectDirectory, projectName, toolSetName); dynamic toolsCollection = config.Tools; foreach (var tool in toolsCollection) { // Project-specific includes Type toolType = tool.GetType(); var compilerToolInterface = toolType.GetInterface("Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool"); if (compilerToolInterface != null) { String includes = tool.FullIncludePath; String definitions = tool.PreprocessorDefinitions; String macrosToUndefine = tool.UndefinePreprocessorDefinitions; String[] includePaths = includes.Split(';'); for (int i = 0; i < includePaths.Length; ++i) includePaths[i] = config.Evaluate(includePaths[i]); sourceForAnalysis.addIncludePaths(includePaths); sourceForAnalysis.addMacros(definitions.Split(';')); sourceForAnalysis.addMacrosToUndefine(macrosToUndefine.Split(';')); break; } } return sourceForAnalysis; } catch (System.Exception ex) { DebugTracer.Trace(ex); return null; } }