示例#1
0
        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);
            }
        }
示例#2
0
        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;
            }
        }