private void OptimizationDisabledFor(VCppProjectCompilerParameters p)
 {
     p.Favor.Should().Be(OptimizationFavor.Speed);
     p.Optimization.Should().Be(OptimizationLevel.Disabled);
     p.WholeProgramOptimization.Should().BeFalse();
     p.SmallerTypeCheck.Should().BeTrue();
 }
예제 #2
0
        public override void Write(XmlWriter writer, Project project, IMSBuildProjectGeneratorContext context)
        {
            var platform = platformManagement.GetDefaultPlatform(project);
            var cliMode  = project.GetCLIMode();

            writer.WriteStartElement("ItemGroup");
            writer.WriteAttributeString("Label", "ProjectConfigurations");
            writer.WriteStartElement("ProjectConfiguration");
            writer.WriteAttributeString("Include", string.Format("Bari|{0}", platform));
            writer.WriteElementString("Configuration", "Bari");
            writer.WriteElementString("Platform", platform);
            writer.WriteEndElement();
            writer.WriteEndElement();

            writer.WriteStartElement("PropertyGroup");
            writer.WriteAttributeString("Label", "Globals");
            writer.WriteElementString("ProjectGuid", projectGuidManagement.GetGuid(project).ToString("B"));

            if (cliMode == CppCliMode.Disabled)
            {
                writer.WriteElementString("Keyword", "Win32Proj");
            }
            else
            {
                VCppProjectCompilerParameters compilerParameters = project.GetInheritableParameters <VCppProjectCompilerParameters, VCppProjectCompilerParametersDef>("cpp-compiler");
                compilerParameters.WriteGlobalProperties(writer);

                writer.WriteElementString("Keyword", "ManagedCProj");
                writer.WriteElementString("RootNamespace", project.Name);
            }

            writer.WriteEndElement();

            writer.WriteStartElement("PropertyGroup");
            writer.WriteAttributeString("Condition", string.Format("'$(Configuration)|$(Platform)' == 'Bari|{0}' ", platform));
            writer.WriteAttributeString("Label", "Configuration");
            WriteHighLevelConfigurationSpecificPart(writer, project);
            writer.WriteEndElement();

            writer.WriteStartElement("Import");
            writer.WriteAttributeString("Project", @"$(VCTargetsPath)\Microsoft.Cpp.props");
            writer.WriteEndElement();

            writer.WriteStartElement("PropertyGroup");
            writer.WriteAttributeString("Condition", string.Format("'$(Configuration)|$(Platform)' == 'Bari|{0}' ", platform));
            WriteConfigurationSpecificPart(writer, project);
            writer.WriteEndElement();

            writer.WriteStartElement("ItemDefinitionGroup");
            writer.WriteAttributeString("Condition", string.Format(" '$(Configuration)|$(Platform)' == 'Bari|{0}' ", platform));
            WriteMIDLParameters(writer, project);
            WriteCompilerParameters(writer, project);
            WriteLinkerParameters(writer, project);
            WriteManifestParameters(writer, project);
            WriteResourceCompilerParameters(writer, project);
            writer.WriteEndElement();
        }
        public void DefaultReleaseOptimizationWrittenToVcxproj()
        {
            var p   = new VCppProjectCompilerParameters(releaseSuite);
            var xml = GetProperties(p);

            var defineNodes = xml.SelectNodes("Optimization");

            defineNodes.Should().NotBeNull();
            defineNodes.Count.Should().Be(1);
            defineNodes[0].InnerText.Should().Be("Full");
        }
        public void DefaultReleaseDefinesWrittenToVcxproj()
        {
            var p   = new VCppProjectCompilerParameters(releaseSuite);
            var xml = GetProperties(p);

            var defineNodes = xml.SelectNodes("PreprocessorDefinitions");

            defineNodes.Should().NotBeNull();
            defineNodes.Count.Should().Be(1);
            defineNodes[0].InnerText.Should().Be("NDEBUG");
        }
        private XmlElement GetProperties(VCppProjectCompilerParameters p)
        {
            using (var writer = new StringWriter())
                using (var xmlWriter = new XmlTextWriter(writer))
                {
                    xmlWriter.WriteStartElement("Root");
                    p.ToVcxprojProperties(xmlWriter);
                    xmlWriter.WriteEndElement();

                    var doc = new XmlDocument();
                    doc.LoadXml(writer.ToString());
                    return(doc.DocumentElement);
                }
        }
예제 #6
0
        private void WriteCompilerParameters(XmlWriter writer, Project project)
        {
            VCppProjectCompilerParameters compilerParameters = project.GetInheritableParameters <VCppProjectCompilerParameters, VCppProjectCompilerParametersDef>("cpp-compiler");

            compilerParameters.FillProjectSpecificMissingInfo(project, project.GetCLIMode(), targetDir as LocalFileSystemDirectory);

            writer.WriteStartElement("ClCompile");
            compilerParameters.ToVcxprojProperties(writer);

            if (project.GetSourceSet("cpp").Files.Any(file => Path.GetFileName(file) == "stdafx.cpp"))
            {
                writer.WriteElementString("PrecompiledHeader", "Use");
            }

            writer.WriteEndElement();
        }
        public void DefaultDefinesForRelease()
        {
            var p = new VCppProjectCompilerParameters(releaseSuite);

            HasReleaseDefines(p);
        }
 private void HasReleaseDefines(VCppProjectCompilerParameters p)
 {
     p.Defines.Should().Contain("NDEBUG");
     p.Defines.Should().NotContain("_DEBUG");
 }
        public void OptimizationDisabledForCustomDebug()
        {
            var p1 = new VCppProjectCompilerParameters(customDebugSuite);

            OptimizationDisabledFor(p1);
        }
        public void OptimizationEnabledForCustomRelease()
        {
            var p1 = new VCppProjectCompilerParameters(customReleaseSuite);

            OptimizationEnabledFor(p1);
        }
        public void DefaultDefinesForCustomDebug()
        {
            var p = new VCppProjectCompilerParameters(customDebugSuite);

            HasDebugDefines(p);
        }