Sharpmake.Generators/VisualStudio/Vcxproj.Template.cs (383 lines of code) (raw):
// Copyright (c) Ubisoft. All Rights Reserved.
// Licensed under the Apache 2.0 License. See LICENSE.md in the project root for license information.
namespace Sharpmake.Generators.VisualStudio
{
public partial class Vcxproj
{
public static class Template
{
public static class Project
{
public static string ProjectBegin =
@"<?xml version=""1.0"" encoding=""utf-8""?>
<Project DefaultTargets=""Build"" ToolsVersion=""[toolsVersion]"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
";
public static string ProjectBeginConfigurationDescription =
@" <ItemGroup Label=""ProjectConfigurations"">
";
public static string ProjectEndConfigurationDescription =
@" </ItemGroup>
";
public static string ProjectConfigurationDescription =
@" <ProjectConfiguration Include=""[configName]|[platformName]"">
<Configuration>[configName]</Configuration>
<Platform>[platformName]</Platform>
</ProjectConfiguration>
";
public static string ProjectDescription =
@" <PropertyGroup Label=""Globals"">
<ProjectGuid>{[guid]}</ProjectGuid>
<TargetFrameworkVersion>[targetFrameworkVersion]</TargetFrameworkVersion>
<TargetFramework>[targetFramework]</TargetFramework>
<Keyword>[projectKeyword]</Keyword>
<DefaultLanguage>en-US</DefaultLanguage>
<RootNamespace>[projectName]</RootNamespace>
<ProjectName>[projectName]</ProjectName>
";
public const string DisableRegistryUse =
@" <DisableRegistryUse>true</DisableRegistryUse>
";
internal const string DisableInstalledVcTargetsUse =
@" <DisableInstalledVCTargetsUse>true</DisableInstalledVCTargetsUse>
";
public static string ProjectDescriptionStartPlatformConditional =
@" <PropertyGroup Label=""Globals"" Condition=""'$(Platform)'=='[platformName]'"">
";
public static string ProjectDescriptionEnd =
@" </PropertyGroup>
";
public static string ImportCppDefaultProps =
@" <Import Project=""[vcTargetsPath]\Microsoft.Cpp.Default.props"" />
";
public static string PropertyGroupStart =
@" <PropertyGroup>
";
public static string PropertyGroupEnd =
@" </PropertyGroup>
";
public static string CustomProperty =
@" <[custompropertyname]>[custompropertyvalue]</[custompropertyname]>
";
public static string VCOverridesProperties =
@" <MSBuildExtensionsPath>[msBuildExtensionsPath]</MSBuildExtensionsPath>
<[vcInstallDirKey]>[vcInstallDirValue]</[vcInstallDirKey]>
";
public static string VCTargetsPathOverride =
@" <[vcTargetsPathKey]>[vcTargetsPath]</[vcTargetsPathKey]>
";
public static string VCTargetsPathOverrideConditional =
@" <[vcTargetsPathKey] Condition=""'$(VisualStudioVersion)'=='[vsVersion]'"">[vcTargetsPath]</[vcTargetsPathKey]>
";
public static string ProjectEnd =
@"</Project>";
public static string ProjectAfterConfigurationsGeneral =
@" <Import Project=""[vcTargetsPath]\Microsoft.Cpp.props"" />
<ImportGroup Label=""ExtensionSettings"">
";
public static string ProjectAfterConfigurationsGeneralImportPropertySheets =
@" <ImportGroup Label=""PropertySheets"">
<Import Project=""$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"" Condition=""exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"" Label=""LocalAppDataPlatform"" />
</ImportGroup>
";
public static string ProjectImportedProps =
@" <Import Project=""[importedPropsFile]"" />
";
public static string ProjectImportedMasmProps =
@" <Import Project=""[vcTargetsPath]\BuildCustomizations\masm.props"" />
";
public static string ProjectImportedNasmProps =
@" <Import Project=""[importedNasmPropsFile]"" />
";
public static string ProjectConfigurationImportedProps =
@" <Import Project=""[importedPropsFile]"" Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"" />
";
public static string ProjectImportedPropsEnd =
@" </ImportGroup>
";
public static string ProjectAfterImportedProps =
@" <PropertyGroup Label=""UserMacros"" />
";
//<ImportGroup Label=""PropertySheets"" Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">
// <Import Project=""$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"" Condition=""exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"" Label=""LocalAppDataPlatform"" />
//</ImportGroup>
public static string ProjectFilesFastBuildFile =
@" <None Include=""[fastBuildFile]"" />
";
public static string ProjectConfigurationBeginItemDefinition =
@" <ItemDefinitionGroup Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">
";
public static string ProjectConfigurationEndItemDefinition =
@" </ItemDefinitionGroup>
";
public static string ProjectTargetsBegin =
@" <Import Project=""[vcTargetsPath]\Microsoft.Cpp.targets"" />
<ImportGroup Label=""ExtensionTargets"">
";
public static string ProjectTargetsItem =
@" <Import Project=""[importedTargetsFile]"" />
";
public static string ProjectMasmTargetsItem =
@" <Import Project=""[vcTargetsPath]\BuildCustomizations\masm.targets"" />
";
public static string ProjectNasmTargetsItem =
@" <Import Project=""[importedNasmTargetsFile]"" />
";
public static string ProjectConfigurationImportedTargets =
@" <Import Project=""[importedTargetsFile]"" Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"" />
";
// Support both regular and native package types, whichever happens to exist
// possible file extension: .targets and .props
public static string ProjectNugetReferenceImport =
@" <Import Project=""$(SolutionDir)\packages\[packageName].[packageVersion]\build\native\[packageName].[fileExtension]"" Condition=""Exists('$(SolutionDir)\packages\[packageName].[packageVersion]\build\native\[packageName].[fileExtension]')"" />
<Import Project=""$(SolutionDir)\packages\[packageName].[packageVersion]\build\[packageName].[fileExtension]"" Condition=""!Exists('$(SolutionDir)\packages\[packageName].[packageVersion]\build\native\[packageName].[fileExtension]') and Exists('$(SolutionDir)\packages\[packageName].[packageVersion]\build\[packageName].[fileExtension]')"" />
";
public static string ProjectNugetReferenceError =
@" <Error Condition=""!Exists('$(SolutionDir)\packages\[packageName].[packageVersion]\build\[packageName].[fileExtension]') and !Exists('$(SolutionDir)\packages\[packageName].[packageVersion]\build\native\[packageName].[fileExtension]')"" Text=""$([[System.String]]::Format('$(ErrorText)', '$(SolutionDir)\packages\[packageName].[packageVersion]\build\native\[packageName].[fileExtension]'))"" />
";
public static string ProjectTargetsEnd =
@" </ImportGroup>
";
public static string ProjectCustomTargetsBegin =
@" <Target Name=""[targetName]"" BeforeTargets=""[beforeTargets]"">
";
public static string ProjectCustomTargetsEnd =
@" </Target>
";
public static string ProjectConfigurationsResourceCompile =
@" <ResourceCompile>[options.ResourceCompileTag]
<PreprocessorDefinitions>[options.ResourcePreprocessorDefinitions];%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>[options.AdditionalResourceIncludeDirectories];%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ShowProgress>[options.ResourceCompilerShowProgress]</ShowProgress>
</ResourceCompile>[options.ResourceCompileTag]
";
public static string ProjectConfigurationsPreBuildEvent =
@" <PreBuildEvent>
<Command>[options.PreBuildEvent]</Command>
<Message>[options.PreBuildEventDescription]</Message>
</PreBuildEvent>
";
public static string ProjectConfigurationsPreLinkEvent =
@" <PreLinkEvent>
<Command>[options.PreLinkEvent]</Command>
<Message>[options.PreLinkEventDescription]</Message>
</PreLinkEvent>
";
public static string ProjectConfigurationsPrePostLinkEvent =
@" <PrePostLinkEvent>
<Command>[options.PrePostLinkEvent]</Command>
<Message>[options.PrePostLinkEventDescription]</Message>
</PrePostLinkEvent>
";
public static string ProjectConfigurationsPostBuildEvent =
@" <PostBuildEvent>
<Command>[options.PostBuildEvent]</Command>
<Message>[options.PostBuildEventDescription]</Message>
</PostBuildEvent>
";
public static string ProjectConfigurationsCustomBuildStep =
@" <CustomBuildStep>
<Command>[options.CustomBuildStep]</Command>
<Message>[options.CustomBuildStepDescription]</Message>
<Outputs>[options.CustomBuildStepOutputs]</Outputs>
<Inputs>[options.CustomBuildStepInputs]</Inputs>
<TreatOutputAsContent>[options.CustomBuildStepTreatOutputAsContent]</TreatOutputAsContent>
</CustomBuildStep>
";
public static string ProjectConfigurationsManifestTool =
@" <Manifest>
<EnableDpiAwareness>[options.EnableDpiAwareness]</EnableDpiAwareness>
<AdditionalManifestFiles>[options.AdditionalManifestFiles]</AdditionalManifestFiles>
</Manifest>
";
public static string ProjectConfigurationsCustomBuildEvent =
@" <CustomBuildStep>
<Command>[options.CustomBuildEvent]</Command>
<Message>[options.CustomBuildEventDescription]</Message>
<Outputs>[options.CustomBuildEventOutputs]</Outputs>
</CustomBuildStep>
";
public static string ProjectFilesBegin =
@" <ItemGroup>
";
public static string ProjectFilesEnd =
@" </ItemGroup>
";
public static string ProjectFilesHeader =
@" <ClInclude Include=""[file.FilePath]"" />
";
public static string ProjectFilesNatvis =
@" <Natvis Include=""[file.FilePath]"" />
";
public static string ProjectFilesSourceBegin =
@" <ClCompile Include=""[file.FilePath]""";
public static string ProjectFilesResourceBegin =
@" <ResourceCompile Include=""[file.FilePath]""";
public static string ProjectFilesPRIResources =
@" <PRIResource Include=""[file.FilePath]"">
<FileType>Document</FileType>
</PRIResource>
";
public static string ProjectFilesNone =
@" <None Include=""[file.FilePath]"" />
";
public static string ProjectFilesCustomSourceBegin =
@" <[type] Include=""[file.FilePath]""";
public static string ProjectFilesResourceEnd =
@" </ResourceCompile>
";
public static string ProjectFilesCustomBuildBegin =
@" <CustomBuild Include=""[file]"">
<FileType>[filetype]</FileType>
";
public static string ProjectFilesCustomBuildDescription =
@" <Message Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[description]</Message>
";
public static string ProjectFilesCustomBuildCommand =
@" <Command Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[command]</Command>
";
public static string ProjectFilesCustomBuildInputs =
@" <AdditionalInputs Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[inputs]</AdditionalInputs>
";
public static string ProjectFilesCustomBuildOutputs =
@" <Outputs Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[outputs]</Outputs>
";
public static string ProjectFilesCustomBuildLinkObject =
@" <LinkObjects Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[linkobjects]</LinkObjects>
";
public static string ProjectFilesCustomBuildOutputItemType =
@" <OutputItemType>[outputItemType]</OutputItemType>
";
public static string ProjectFilesCustomBuildEnd =
@" </CustomBuild>
";
public static string ProjectFilesSourceEnd =
@" />
";
public static string ProjectFilesCustomSourceEnd =
@" />
";
public static string ProjectFilesSourceBeginOptions =
@">
";
public static string ProjectFilesCustomSourceBeginOptions =
@">
";
public static string ProjectFilesSourceEndOptions =
@" </ClCompile>
";
public static string ProjectFilesCustomSourceEndOptions =
@" </[type]>
";
public static string ProjectFilesSourceObjectFileName =
@" <ObjectFileName Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[ObjectFileName]</ObjectFileName>
";
public static string ProjectFilesSourcePrecompCreate =
@" <PrecompiledHeader Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">Create</PrecompiledHeader>
";
public static string ProjectFilesSourcePrecompNotUsing =
@" <PrecompiledHeader Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">NotUsing</PrecompiledHeader>
";
public static string ProjectFilesForcedIncludeVanilla =
@" <ForcedIncludeFiles Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[options.ForcedIncludeFilesVanilla]</ForcedIncludeFiles>
";
public static string ProjectFilesAdditionalForcedInclude =
@" <ForcedIncludeFiles Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">%(ForcedIncludeFiles);[ForcedIncludeFiles]</ForcedIncludeFiles>
";
public static string ProjectFilesAdditionalForcedIncludeVanilla =
@" <ForcedIncludeFiles Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[options.ForcedIncludeFilesVanilla];[ForcedIncludeFiles]</ForcedIncludeFiles>
";
public static string ProjectFilesSourceExcludeFromBuild =
@" <ExcludedFromBuild Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">true</ExcludedFromBuild>
";
public static string ProjectFilesSourceConsumeWinRTExtensions =
@" <CompileAsWinRT Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">true</CompileAsWinRT>
";
public static string ProjectFilesSourceExcludeWinRTExtensions =
@" <CompileAsWinRT Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">false</CompileAsWinRT>
";
public static string ProjectFilesSourceEnableExceptions =
@" <ExceptionHandling Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[exceptionSetting]</ExceptionHandling>
";
public static string ProjectFilesSourceCompileAsC =
@" <CompileAs Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">CompileAsC</CompileAs>
";
public static string ProjectFilesSourceCompileAsCPP =
@" <CompileAs Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">CompileAsCPP</CompileAs>
";
public static string ProjectFilesSourceCompileAsCLR =
@" <CompileAsManaged Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">true</CompileAsManaged>
";
public static string ProjectFilesSourceDoNotCompileAsCLR =
@" <CompileAsManaged Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">false</CompileAsManaged>
";
public static string ProjectFilesSourceDefine =
@" <PreprocessorDefinitions Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">[ProjectFilesSourceDefine];%(PreprocessorDefinitions)</PreprocessorDefinitions>
";
public static string ProjectFilesSourceExcludeGenerateXmlDocumentation =
@" <GenerateXMLDocumentationFiles Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">false</GenerateXMLDocumentationFiles>
";
public static string SingleReferenceByName =
@" <Reference Include=""[include]"" />
";
public static string ReferenceByName =
@" <Reference Include=""[include]"">
<Private>[private]</Private>
</Reference>";
public static string ProjectReference =
@" <ProjectReference Include=""[include]"">
<Project>{[projectGUID]}</Project>
<Name>[projectRefName]</Name>
<Private>[private]</Private>
<ReferenceOutputAssembly>[options.ReferenceOutputAssembly]</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>[options.CopyLocalSatelliteAssemblies]</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>[options.LinkLibraryDependencies]</LinkLibraryDependencies>
<UseLibraryDependencyInputs>[options.UseLibraryDependencyInputs]</UseLibraryDependencyInputs>
</ProjectReference>
";
public static string ReferenceByPath =
@" <Reference Include=""[include]"" Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">
<HintPath>[hintPath]</HintPath>
<Private>[private]</Private>
</Reference>
";
public static string ProjectBuildMacroEnvironmentVariable =
@" <BuildMacro Include=""[environmentVariableName]"">
<Value>[environmentVariableValue]</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
";
public static string ItemGroupBegin =
@" <ItemGroup>
";
public static string ItemGroupEnd =
@" </ItemGroup>
";
public const string PlatformFolderOverride =
@" <_PlatformFolder>[platformFolder]</_PlatformFolder>
";
public const string AdditionalVCTargetsPath =
@" <AdditionalVCTargetsPath>[additionalVCTargetsPath]</AdditionalVCTargetsPath>
<_VCTargetsPathForToolset>$(AdditionalVCTargetsPath)</_VCTargetsPathForToolset>
";
internal static class Filters
{
public static string Begin =
@"<?xml version=""1.0"" encoding=""utf-8""?>
<Project ToolsVersion=""[toolsVersion]"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
";
public static string ProjectFiltersEnd =
@"</Project>";
public static string FileNoFilter =
@" <[type] Include=""[file.FilePath]"" />
";
public static string FileWithFilter =
@" <[type] Include=""[file.FilePath]"">
<Filter>[file.FilterPath]</Filter>
</[type]>
";
public static string FileWithDependencyFilter =
@" <CustomBuild Include=""[fileName]"" />
";
public static string Filter =
@" <Filter Include=""[name]"">
<UniqueIdentifier>{[guid]}</UniqueIdentifier>
</Filter>
";
}
}
}
}
}