public new void Configure(Configuration conf, ZenTarget target) { base.Configure(conf, target); conf.Output = Project.Configuration.OutputType.Lib; conf.TargetPath = RootDir + @"\Build\{projects}\[project.Name]\Output\" + target.Platform.ToString(); conf.TargetFileName = "[project.Name]_" + target.GetNameBuild() + "_[target.Name]"; }
public void Configure(Configuration conf, ZenTarget target) { conf.ProjectFileName = "[project.Name]_[target.DevEnv]"; conf.ProjectPath = RootDir + @"\Build\{Projects}\[project.Name]"; conf.Name = "[project.Name]_" + target.GetNameBuild() + "[target.Name]"; //-------------------------------------------------------------------------------------- // Generates PreCompiled Header file //-------------------------------------------------------------------------------------- //NOTE : At the moment only pick first file, and use its name for generating pch, should // be revisited to all use PrecompileHeader with multiple includes support if (PchFiles.Count > 0) { Resolver resolver = new Resolver(); resolver.SetParameter("conf", conf); resolver.SetParameter("target", target); resolver.SetParameter("project", this); conf.PrecompHeader = "PrecompiledHeader.h"; conf.PrecompSource = "PrecompiledHeader.cpp"; string PchOutputDir = resolver.Resolve(conf.ProjectPath); string OutputSource = PchOutputDir + "\\" + conf.PrecompSource; string OutputHeader = PchOutputDir + "\\" + conf.PrecompHeader; Util.ResolvePath(SharpmakeCsPath, ref PchOutputDir); System.IO.Directory.CreateDirectory(PchOutputDir); //------------------- //System.IO.File.WriteAllText(OutputSource, "//Generated PCH\n#include \"" + conf.PrecompHeader + "\""); //System.IO.File.WriteAllText(OutputHeader, "//Generated PCH\n#pragma once\n\n"); //foreach (string HeaderFile in PchFiles) //{ // System.IO.File.AppendAllText(OutputHeader, "#include \"" + HeaderFile + "\"\n"); //} //------------------- conf.PrecompHeader = PchFiles.SortedValues[0]; // REMOVE ME System.IO.File.WriteAllText(OutputSource, "//Generated PCH\n#include \"" + PchFiles.SortedValues[0] + "\""); //------------------- //See about moving this out of config? Strings NewPchFiles = new Strings(SourceFiles); NewPchFiles.Add(OutputSource); SourceFiles = NewPchFiles; } conf.IncludePrivatePaths.Add(SourceRootPath); //-------------------------------------------------------------------------------------- // Remove compilation of files with extension not supported by current platform // (use filename_[PLATFORM].ext naming convention) //-------------------------------------------------------------------------------------- PlatformFileExt[] ConsoleFileExtensions = new PlatformFileExt[] { new PlatformFileExt("PC", Platform.win32 | Platform.win64), new PlatformFileExt("DX11", 0, GraphicsAPI.DirectX11), new PlatformFileExt("DX12", 0, GraphicsAPI.DirectX12) }; foreach (var Entry in ConsoleFileExtensions) { if (Entry.PlatformMask.HasFlag(target.Platform) == false && Entry.GraphicMask.HasFlag(target.GraphicsAPI) == false) { conf.SourceFilesBuildExcludeRegex.Add(".*_" + Entry.FileExt + @"\..*"); } } //-------------------------------------------------------------------------------------- // Add build config specific defines //-------------------------------------------------------------------------------------- if ((Platform.win32 | Platform.win64).HasFlag(target.Platform)) { conf.Defines.Add("_WINDOWS"); conf.Defines.Add("ZEN_PLATFORM=PC"); conf.Defines.Add("ZEN_PLATFORM_PC=1"); conf.Defines.Add("_HAS_EXCEPTIONS=0"); } if (target.GraphicsAPI == GraphicsAPI.DirectX11) { conf.Defines.Add("ZEN_RENDERER=DX11"); conf.Defines.Add("ZEN_RENDERER_DX11=1"); } else if (target.GraphicsAPI == GraphicsAPI.DirectX12) { conf.Defines.Add("ZEN_RENDERER=DX12"); conf.Defines.Add("ZEN_RENDERER_DX12=1"); } if (target.Optimization == Optimization.Debug) { conf.Defines.Add("ZEN_BUILD_DEBUG=1"); } else if (target.Optimization == Optimization.Release) { conf.Defines.Add("ZEN_BUILD_RELEASE=1"); } else if (target.Optimization == Optimization.Retail) { conf.Defines.Add("ZEN_BUILD_FINAL=1"); } if (target.EngineMode == EngineMode.Game) { conf.Defines.Add("ZEN_ENGINEGAME=1"); } else if (target.EngineMode == EngineMode.Tool) { conf.Defines.Add("ZEN_ENGINETOOL=1"); } //-------------------------------------------------------------------------------------- // Others options per Platform //-------------------------------------------------------------------------------------- if (target.GraphicsAPI == GraphicsAPI.DirectX12) { conf.IncludePrivatePaths.Add(RootDir + @"\Engine\ThirdParty\WinPixEventRuntime\Include\WinPixEventRuntime"); } //-------------------------------------------------------------------------------------- // Compilers options //-------------------------------------------------------------------------------------- //Disable some warnings List <string> DisabledWarning = new List <string>(); DisabledWarning.Add("4201"); // Nameless structure DisabledWarning.Add("4100"); // Unreferenced parameter DisabledWarning.Add("4127"); // conditional expression is constant DisabledWarning.Add("4505"); // unreferenced local function has been removed DisabledWarning.Add("4238"); // nonstandard extension used: class rvalue used as lvalue (Using & on constructor of class for array init) conf.Options.Add(new Sharpmake.Options.Vc.Compiler.DisableSpecificWarnings(DisabledWarning.ToArray())); conf.Options.Add(Sharpmake.Options.Vc.General.TreatWarningsAsErrors.Enable); conf.Options.Add(Sharpmake.Options.Vc.Compiler.Exceptions.Disable); conf.Options.Add(Sharpmake.Options.Vc.Compiler.MinimalRebuild.Disable); //Incompatible with /MP (multi process build) conf.Options.Add(Sharpmake.Options.Vc.Compiler.RTTI.Enable); //Temp, until fix issue with RTTI conf.Options.Add(Options.Vc.General.CharacterSet.Unicode); conf.Options.Add(Options.Vc.General.WindowsTargetPlatformVersion.v10_0_14393_0); }
public void Configure(Configuration conf, ZenTarget target) { conf.SolutionFileName = "[solution.Name]_[target.DevEnv]"; conf.SolutionPath = RootDir + @"\Build\{Projects}"; conf.PlatformName = target.GetNameBuild(); }