Add build setting for target CPU architecture in C++ compile environment

This commit is contained in:
2023-09-03 17:52:03 +03:00
parent 20a92a994e
commit e8cb1686c3
6 changed files with 107 additions and 2 deletions

View File

@@ -327,7 +327,7 @@ namespace Flax.Build.Projects.VisualStudio
vcFiltersFileContent.AppendLine(" </ItemGroup>");
// IntelliSense information
var additionalDefinitions = project.Defines.ToList();
var additionalOptions = new List<string>();
switch (project.Configurations[0].TargetBuildOptions.CompileEnv.CppVersion)
{
@@ -345,8 +345,28 @@ namespace Flax.Build.Projects.VisualStudio
break;
}
switch (project.Configurations[0].TargetBuildOptions.CompileEnv.Architecture)
{
case CpuArchitecture.Default:
break;
case CpuArchitecture.AVX512:
additionalDefinitions.Add("__AVX512F__");
additionalDefinitions.Add("__AVX512CD__");
additionalDefinitions.Add("__AVX512BW__");
additionalDefinitions.Add("__AVX512DQ__");
additionalDefinitions.Add("__AVX512VL__");
goto case CpuArchitecture.AVX2;
case CpuArchitecture.AVX2:
additionalDefinitions.Add("__AVX2__");
goto case CpuArchitecture.AVX;
case CpuArchitecture.AVX:
additionalDefinitions.Add("__AVX__");
break;
}
vcProjectFileContent.AppendLine(" <PropertyGroup>");
vcProjectFileContent.AppendLine(string.Format(" <NMakePreprocessorDefinitions>$(NMakePreprocessorDefinitions){0}</NMakePreprocessorDefinitions>", (project.Defines.Count > 0 ? (";" + string.Join(";", project.Defines)) : "")));
vcProjectFileContent.AppendLine(string.Format(" <NMakePreprocessorDefinitions>$(NMakePreprocessorDefinitions){0}</NMakePreprocessorDefinitions>", (additionalDefinitions.Count > 0 ? (";" + string.Join(";", additionalDefinitions)) : "")));
vcProjectFileContent.AppendLine(string.Format(" <NMakeIncludeSearchPath>$(NMakeIncludeSearchPath){0}</NMakeIncludeSearchPath>", (project.SearchPaths.Length > 0 ? (";" + string.Join(";", project.SearchPaths)) : "")));
vcProjectFileContent.AppendLine(" <NMakeForcedIncludes>$(NMakeForcedIncludes)</NMakeForcedIncludes>");
vcProjectFileContent.AppendLine(" <NMakeAssemblySearchPath>$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>");