Sharpmake is an open-source C#-based solution for generating project definition files, such as Visual Studio projects and solutions, GNU makefiles, Xcode projects, etc.

Overview

Sharpmake

build

Introduction

Sharpmake is a generator for Visual Studio projects and solutions. It is similar to CMake and Premake, but it is designed for speed and scale. Sharpmake has been used at Ubisoft to generate several thousands of vcxproj, csproj and sln files in a matter of seconds, and each of these projects can support a large number of Visual Studio configurations as well.

That makes Sharpmake ideal for the development of multi-platform games, where the number of platforms, the different levels of optimization, the multiple rendering APIs on PC and the level editor can quickly multiply the number of configurations a given code base must support. Sharpmake generates all those configurations at once, very quickly. Thus, it becomes trivial to generate and regenerate the entire project.

Sharpmake uses C# for scripting, hence the name. That means that you can edit your scripts in Visual Studio (or Visual Studio Code) and have a complete IntelliSense programming experience.

Sharpmake can also generate makefiles and Xcode projects, but it is currently only available for Windows. With .NET Core and .NET Standard though, it is our hope that it will eventually cross the platform barrier. In the meanwhile, you may have luck using it with Mono.

Sharpmake was developed internally at Ubisoft for Assassin's Creed 3 in 2011. After experimenting with the other existing tools, it became clear that none of these solutions were performant enough to generate the number of configurations needed (at least not in a trivial way) and that a custom generator was needed.

Documentation

The best place for the Sharpmake documentation is the wiki on GitHub. The Sharpmake source code also comes with samples that you can study.

Building Sharpmake

Building Sharpmake is quite straightforward. Clone the repo on GitHub, run the "bootstrap" script (".bat" for Windows, ".sh" for Unix platforms), open the solution in Visual Studio and build the solution in Release. The binaries will be found in the tmp/bin/release directory.

More Platforms

Sharpmake originally had support for game consoles, but Ubisoft pulled it out because those could not be open sourced. Sharpmake now has an extension system that allows support for these consoles to be added back at runtime.

If you need support for these platforms and are an authorized developer, you can contact the SDK provider to get platform extension for Sharpmake.

Contributing

Tests

We will only accept merge requests that pass every tests. The unit tests are written with NUnit and the regression tests are ran by comparing the samples' output with a reference output. You can run the regression_tests.py script after having built the solution in Visual Studio to run the regression tests.

Because the regression tests just do a direct comparison with the output, it is possible to get a false negative after having done a good change. In that case, please update the tests so they match the output after your change. You can run the UpdateSamplesOutput.bat and UpdateSharpmakeProjects.bat batch files to automatically overwrite the reference output files.

Naturally, we also recommend that you put your own tests after fixing a bug or adding a feature to help us avoid regressions.

Functional tests are generating test projects and building them to test functionality

used toolset for functional tests:

tools\FastBuild - v1.04. http://www.fastbuild.org

Additional Platforms

If you want to add support for an additional platform, please make sure that the platform is open and that you are not breaking your NDA. Ubisoft has not published platform support for most video game consoles for that exact reason. We will not accept merge requests for new platforms that are not completely open for development.

Comments
  • Clang toolset support in VS2019

    Clang toolset support in VS2019

    While trying to generate projects with 'Clang' compiler support, I noticed that the built-in LLVM toolset support in VS2019 is not working when using : conf.Options.Add(Sharpmake.Options.Vc.General.PlatformToolset.LLVM);

    To fix this, I had to make 2 changes in Sharpmake code, making the result identical to what VisualStudio set on a new project with LLVM toolset :

    1. Change the toolset name. Sharpmake currently set 'llvm' in the .vcxprj file but VC2019 expects 'ClangCL' ProjectOptionsGenerator.cs : 1133 Options.Option(Options.Vc.General.PlatformToolset.LLVM, () => { context.Options["PlatformToolset"] = "ClangCL"; })
    2. Set the default Clang tool path to '$(LLVMInstallDir)' Util.cs : 1739 return GetRegistryLocalMachineSubKeyValue(registryKeyString, null, @"$(LLVMInstallDir)"); // null to get default

    It could also be nice of the documentation mentioned how to activate the LLVM toolset.

    opened by sammyfreg 13
  • Add support to generate .NET Core projects.

    Add support to generate .NET Core projects.

    • I think most csproj features are still usable so only changed the minimum set to get the projects recognized by visual studio.
    • Tested with Visual Studio 2017 and 2019.
    • Tested linux netcoreapp1.0 and 2.2

    Next step I'll be trying to generate .NET Core versions sharpmake itself.

    opened by kudaba 10
  • /generateDebugSolution does not work

    /generateDebugSolution does not work

    Following along with the example here: https://github.com/ubisoftinc/Sharpmake/blob/master/docs/OVERVIEW.md#create-a-debugging-environment

    I've added the /generateDebugSolution option to my build:

    ..\bin\Sharpmake.Application.exe /sources(@"main.sharpmake.cs") /verbose /generateDebugSolution

    The result is as follows:

    E:\dev\C++\fbxdebugger\build>..\bin\Sharpmake.Application.exe /sources(@"main.sharpmake.cs") /verbose /generateDebugSolution
    [00:00] sharpmake
    [00:00]   arguments : /sources(@"main.sharpmake.cs") /verbose /generateDebugSolution
    [00:00]   directory : E:\dev\C++\fbxdebugger\build
    [00:00]
    [00:00] input sources:
    [00:00]   E:\dev\C++\fbxdebugger\build\main.sharpmake.cs
    [00:00]   building projects and solutions configurations using 8 tasks...
    [00:00]     build done in 0.0 sec
    
    Error:
    The type "Sharpmake.DebugSolution" does not declare a constructor, please add one to allow Sharpmake to detect source file from construction callstack.
    [00:00]         While running E:\dev\C++\fbxdebugger\bin\Sharpmake.Application.exe
            @9/21/2018 11:52:39 PM: Exception message (level 0):
            Unhandled exception in thread pool
            Inner exception message (level 1):
            Cannot create instances of type: DebugSolution, caught exception message Exception has been thrown by the target of an invocation.. Make sure default ctor is public
            Inner exception message (level 2):
            Exception has been thrown by the target of an invocation.
            Inner exception message (level 3):
            The type "Sharpmake.DebugSolution" does not declare a constructor, please add one to allow Sharpmake to detect source file from construction callstack.
    
            Stack trace:
            Inner exception stack trace (level 3):
       at Sharpmake.Util.GetStackSourceFileTopMostTypeOf(Type type, String& sourceFile)
       at Sharpmake.Solution.Initialize(Type targetType)
       at Sharpmake.DebugSolution..ctor()
            Inner exception stack trace (level 2):
       at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
       at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
       at System.Activator.CreateInstance(Type type, Boolean nonPublic)
       at System.Activator.CreateInstance(Type type)
       at Sharpmake.Solution.CreateProject(Type solutionType, List`1 fragmentMasks)
            Inner exception stack trace (level 1):
       at Sharpmake.Solution.CreateProject(Type solutionType, List`1 fragmentMasks)
       at Sharpmake.Builder.LoadSolutionType(Type type)
       at Sharpmake.Builder.BuildProjectAndSolutionTask(Object parameter)
       at Sharpmake.ThreadPool.ThreadWork(Object obj)
            Root stack trace (level 0):
       at Sharpmake.ThreadPool.Wait()
       at Sharpmake.Builder.BuildProjectAndSolution()
       at Sharpmake.Application.Program.CreateBuilder(BaseBuildContext context, Argument parameters, Boolean allowCleanBlobs, Boolean generateDebugSolution)
       at Sharpmake.Application.Program.GenerateAll(BaseBuildContext buildContext, Argument parameters)
       at Sharpmake.Application.Program.Main()
    

    my sharpmake source file is as follows:

    using System.IO; // for Path.Combine
    using Sharpmake; // contains the entire Sharpmake object library.
    
    // Represents the project that will be generated by Sharpmake and that contains
    // the sample C++ code.
    [Generate]
    class BasicsProject : Project
    {
        private string ImGuiRootPath;
        public BasicsProject()
        {
            // The name of the project in Visual Studio. The default is the name of
            // the class, but you usually want to override that.
            Name = "Basics";
    
            // The directory that contains the source code we want to build is the
            // same as this one. This string essentially means "the directory of
            // the script you're reading right now."
            SourceRootPath = @"[project.SharpmakeCsPath]\..\src";
            ImGuiRootPath = @"[project.SourceRootPath}\..extern\imgui";
    
            SourceFiles.Add(@"[project.ImGuiRootPath]\imgui.cpp");
            SourceFiles.Add(@"[project.ImGuiRootPath]\imgui_draw.cpp");
            SourceFiles.Add(@"[project.ImGuiRootPath]\imgui_widgets.cpp");
    
            // Specify the targets for which we want to generate a configuration
            // for. Instead of creating multiple targets manually here, we can
            // use the binary OR operator to define multiple targets at once.
            // Sharpmake will generate all combinations possible and generate a
            // target for it.
            //
            // The code below is the same as creating 4 separate targets having
            // those flag combinations:
            //    * Platform.win32, DevEnv.vs2015, Optimization.Debug
            //    * Platform.win32, DevEnv.vs2015, Optimization.Release
            //    * Platform.win64, DevEnv.vs2015, Optimization.Debug
            //    * Platform.win64, DevEnv.vs2015, Optimization.Release
            AddTargets(new Target(
                // we want a target that builds for both 32 and 64-bit Windows.
                Platform.win32 | Platform.win64,
    
                // we only care about Visual Studio 2017. (Edit as needed.)
                DevEnv.vs2017,
    
                // of course, we want a debug and a release configuration.
                Optimization.Debug | Optimization.Release));
        }
    
        // Sets the properties of each configuration (conf) according to the target.
        //
        // This method is called once for every target specified by AddTargets. Since
        // we only want vs2015 targets and we want 32- and 64-bit targets, each having
        // a debug and a release version, we have 1 x 2 x 2 targets to configure, so it
        // will be called 4 times.
        //
        // If we had instead specified vs2012 | vs2015 | vs2017 it would have been
        // called 12 times. (3 x 2 x 2)
        [Configure]
        public void ConfigureAll(Project.Configuration conf, Target target)
        {
            // Specify where the generated project will be. Here we generate the
            // vcxproj in a /generated directory.
            conf.ProjectPath = Path.Combine("[project.SharpmakeCsPath]", "generated");
            conf.IncludePaths.Add(@"[project.SourceRootPath]\..\extern\imgui");
        }    
    }
    
    // Represents the solution that will be generated and that will contain the
    // project with the sample code.
    [Generate]
    class BasicsSolution : Solution
    {
        public BasicsSolution()
        {
            // The name of the solution.
            Name = "Basics";
    
            // As with the project, define which target this solution builds for.
            // It's usually the same thing.
            AddTargets(new Target(
                Platform.win32 | Platform.win64,
                DevEnv.vs2017,
                Optimization.Debug | Optimization.Release));
        }
    
        // Configure for all 4 generated targets. Note that the type of the
        // configuration object is of type Solution.Configuration this time.
        // (Instead of Project.Configuration.)
        [Configure]
        public void ConfigureAll(Solution.Configuration conf, Target target)
        {
            // Puts the generated solution in the /generated folder too.
            conf.SolutionPath = @"[solution.SharpmakeCsPath]\generated";
    
            // Adds the project described by BasicsProject into the solution.
            // Note that this is done in the configuration, so you can generate
            // solutions that contain different projects based on their target.
            //
            // You could, for example, exclude a project that only supports 64-bit
            // from the 32-bit targets.
            conf.AddProject<BasicsProject>(target);
        }
    
        [Main]
        public static void SharpmakeMain(Arguments sharpmakeArgs)
        {
            // Tells Sharpmake to generate the solution described by BasicsSolution.
            sharpmakeArgs.Generate<BasicsSolution>();
        }
    }
    
    opened by Nuclearfossil 10
  • GoogleTest + Sharpmake

    GoogleTest + Sharpmake

    Visual Studio propose an integration of the GoogleTest framework through "Google Test Adapter" extension. Which allow us to use "Test Explorer Windows". That give us a new project property group: image I tried to add a new dll project with all dependencies of gtest (googletest). But the gtest project have packages.config file with references (from visual studio gtest template): image

    I wasn't able to find a hook in Sharpmake API to deal with those elements.

    Do you have any advice how I could add GTest project with Sharpmake.

    opened by soufianekhiat 9
  • error CA1416 causes bootstrap to fail

    error CA1416 causes bootstrap to fail

    Hello, I'm new to sharpmake - When running the bootstrap.bat I'm failing to compile due to a series of errors like:

    Sharpmake\Sharpmake\Util.cs(1115,54): error CA1416: 'RegistryKey.OpenSubKey(string)' is supported on 'windows' [C:\redacted\Sharpmake\Sharpmake \Sharpmake.csproj]

    After some quick searching I found: https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1416

    Unless I'm misinterpreting the setup instructions or that link, I think this means some additional annotations may be needed in the source, or some settings changed for the bootstrap process.

    For my environment I'm using VS 2019 Enterprise.

    bug 
    opened by xoorath 8
  • Symbols not loading in debug solution

    Symbols not loading in debug solution

    Hi,

    I'm using sharpmake on a small project but I've never gotten the debugging solution to work properly. I can use it to edit my code and it provides me with intellisense but I'm unable to debug. It seems that VS never loads the symbols for the solution.

    Any ideas?

    Thanks, Jonathan

    opened by jonathansty 8
  • Add support for VcxprojUserFile.LocalDebuggerAttach

    Add support for VcxprojUserFile.LocalDebuggerAttach

    In my project I hot reload DLL plugins, and for this reason I want to attach my debugger to a running executable instead of launching it.

    The regression tests succeeded, I don't know if I have to provide anything else. Thank you!

    opened by firesgc 7
  • Errors running bootstrap.bat

    Errors running bootstrap.bat

    Hi. I've been using a branched version of Sharpmake for a few years (I love it). I wanted to get in on the new stuff that's been in development, so I thought I'd get a clean build. However, I can't run the bootstrap.bat without getting the errors. I could solve some of these by force-adding a two NUGet packages, but I ran into more issues and, and that that's not the way to do it anyway.

    Any suggestions?

    Jens

    C:\platforms\Sharpmake>bootstrap.bat MSBuild batch path: "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsMSBuildCmd.bat"


    ** Visual Studio 2017 MSBuild Command Prompt ** Copyright (c) 2017 Microsoft Corporation


    Compiling Sharpmake.Application/Sharpmake.Application.csproj in "Debug|AnyCPU"... msbuild -t:build -restore "Sharpmake.Application/Sharpmake.Application.csproj" /nologo /verbosity:m /p:Configuration="Debug" /p:Platform="AnyCPU" Restore completed in 33,02 ms for C:\platforms\Sharpmake\Sharpmake\Sharpmake.csproj. CSC : error CS8032: An instance of analyzer Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers.EnableConcurrentExecutionAnalyzer cannot be created from C:\Users\jens.nuget\packages\microsoft.codeanalysis.analyzers\3.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll : Could not load file or assembly 'Microsoft.CodeAnalysis, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependen cies. The system cannot find the file specified.. [C:\platforms\Sharpmake\Sharpmake\Sharpmake.csproj] ...

    opened by Llerd 7
  • Resolve AdditionalSourceRootPaths before use

    Resolve AdditionalSourceRootPaths before use

    The AdditionalSourceRootPaths member never had the paths it contained resolved, resulting in paths that had mixed folder separators to not be looked up correctly inside of ResolveSourceFiles.

    Ex: A path added to AdditionalSourcerootPaths on Mac OSX set as:

    @"[project.SharpmakeCsPath]..\externals\SomeExternal"

    that expanded to:

    /Users/SomeUser/Documents/SomeProject/sharpmake\..\externals\SomeExternal

    would fail to have the files in the directory looked up. Calling ResolvePath on the member causes the path to be normalized to:

    /Users/SomeUser/Documents/SomeProject/externals/SomeExternal

    opened by constcuriosity 5
  • AdditionalCompilerOptions per file

    AdditionalCompilerOptions per file "/bigobj"

    How can I add a custom build option per file? I am using AdditionalCompilerOptions for project, I would like to add "/bigobj" for a given cpp file.

    opened by soufianekhiat 5
  • TextTemplatingFilePreprocessor

    TextTemplatingFilePreprocessor

    Hi,

    I have a number of text templates that are using the TextTemplatingFilePreprocessor value in the generation tags. I can't seem to find a way to added them to a project. The code seems to use AdditionalNone to allow for this, but it doesn't work. Anyone have any idea of how to set this. Or is there a way to customize the tags it contains?

    Thank you

    opened by DjangoLowe 5
  • Bump actions/checkout from 3.1.0 to 3.3.0

    Bump actions/checkout from 3.1.0 to 3.3.0

    Bumps actions/checkout from 3.1.0 to 3.3.0.

    Release notes

    Sourced from actions/checkout's releases.

    v3.3.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/checkout/compare/v3.2.0...v3.3.0

    v3.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/checkout/compare/v3.1.0...v3.2.0

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Configuration default tagged option is not serialized

    Configuration default tagged option is not serialized

    Hello,

    I want to generate a csproj containing: <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>

    i try by doing this

            public override void Configure(Configuration conf, Target target)
            {
                base.Configure(conf, target);
                conf.Options.Add(Options.CSharp.AutoGenerateBindingRedirects.Disabled);
            }
    

    By the way it is not serialized, because this option is tagged with Default attribute (i guess). (If i put Enabled it is serialized) Moreover the default option should be true since recently (https://learn.microsoft.com/en-us/dotnet/framework/configure-apps/how-to-enable-and-disable-automatic-binding-redirection)

    The automatic binding redirection feature affects desktop apps that target .NET Framework 4.5.1 or a later version. If you haven't explicitly enabled or disabled autogenerated binding redirection and you upgrade an existing project, the feature is automatically enabled.

    Thank you.

    opened by glaporte-ubisoft 0
  • Portable debug types for C# projects

    Portable debug types for C# projects

    As of now, Sharpmake is only supporting the "default" debug type options for C# projects. Those are full and pdbonly. However, there are two more options for generating portable Program Debug Database as described in the Microsoft's documentation: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/code-generation

    The portable and embedded options are useful for tools that support only the open-source standard: https://github.com/dotnet/core/blob/90ff62b74898499466bb8423d44bedf4b34bf9b0/Documentation/diagnostics/portable_pdb.md

    opened by ShawnCZek 0
  • /multithreaded(false) doesn't get added to generated solution

    /multithreaded(false) doesn't get added to generated solution

    When passing /sources, /generateDebugSolution and multithreaded arguments: the multithreaded argument doesn't get passed to the launch profile of the generated debug solution. Only the sources parameter seems to come along for the ride.

    /multithreaded(false) can be helpful when debugging, that's how I figured this out. I was hoping to debug generation without threads getting in the way. :)

    opened by xoorath 0
  • Bump Basic.Reference.Assemblies.Net60 from 1.3.0 to 1.4.1 in /Sharpmake

    Bump Basic.Reference.Assemblies.Net60 from 1.3.0 to 1.4.1 in /Sharpmake

    Bumps Basic.Reference.Assemblies.Net60 from 1.3.0 to 1.4.1.

    Release notes

    Sourced from Basic.Reference.Assemblies.Net60's releases.

    Release v1.4.1

    Create release 1.4.1

    Release v1.4.0

    Create release 1.4.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies .NET 
    opened by dependabot[bot] 0
Releases(0.22.2)
  • 0.22.2(Dec 14, 2022)

    New features / improvements

    • Optimize PlatformRegistry 1312a94f
    • Project.Configuration.BuildDependencyNodeTree optimization d3c803d2
    • Optimize Targets.Initialize() a6350270
    • Optimize Bff.Generate() 429755b7
    • Minor optimization in MasterBff.Generate() 1d25bf72
    • Refactoring of IFileGenerator and FileGenerator interface 3f8604e3
    • Optimize Project.GetConfiguration() 140a11a1
    • Testing ServerGC is active. 37fa5f27
    • Util class methods optimizations 25af50f7

    Bug fixes

    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net6.0-Linux-0.22.2.zip(6.85 MB)
    Sharpmake-net6.0-macOS-0.22.2.zip(6.82 MB)
    Sharpmake-net6.0-Windows-0.22.2.zip(7.32 MB)
  • 0.22.1(Dec 7, 2022)

    New features / improvements

    • Do not link or reference dotnet build-order dependencies 723c8384

    Bug fixes

    • restore options["ExecutablePrefix"] related code to make sure output dynamic library with proper prefix 25bdd507
    • Fix ios input fullnamespec lib a6b60e12
    • Fix intellisense errors in Visual Studio when using clang compiler and nmake projects. 983ce1cc
    • Fix sample dependencies. deca2ebd
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net6.0-Linux-0.22.1.zip(6.84 MB)
    Sharpmake-net6.0-macOS-0.22.1.zip(6.82 MB)
    Sharpmake-net6.0-Windows-0.22.1.zip(7.32 MB)
  • 0.22.0(Nov 23, 2022)

    Important notes

    Sharpmake executable is now built using .net6 and cannot be built with .net framework anymore.

    New features / improvements

    • Preparation for some upcoming refactoring in IFileGenerator and FileGenerator. 5f6db7e2
    • Add basic support for using net 7.0 in target fragment a7644ff6
    • Updated UpdateSampleOutput batch file to use .net 6.0 executable 1c6652c6
    • Sharpmake is now using .net 6.0 instead of .net 5.0 e9b72682
    • Kill .net 4.7.2 version of sharpmake and some related refactoring 8c215bf5
    • Switch to using server garbage collection for sharpmake application, for some nice speedups a36bfa45
    • Add build assembly/reference support in Builder/Assembler f7aba1ce
    • Add FastBuild UnityInputIsolateListFile support 11d58824
    • Add precompiled header output file name 36c48fbe
    • Add missing CppLanguageStandard.CPP20 for NMake Intellisense helper. a69628fb

    Bug fixes

    • Fix for handling multiple files with same names 413fee42
    • Fix generated iOS project can't be loaded issue 9deb6a92
    • fix the first path separator might miss in PathUtil.FindCommonRootPath() on unix-like os 0461670f
    • Fix unit test for CLR projects e9ae348d
    • Wrap custom command in quotes when using MSBuild 9120c431
    • Fixed support of RTTI flag in CLR project 823ed2e1
    • fixed DebugProject.ProjectPath 9818883c
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net6.0-Linux-0.22.0.zip(6.84 MB)
    Sharpmake-net6.0-macOS-0.22.0.zip(6.82 MB)
    Sharpmake-net6.0-Windows-0.22.0.zip(7.32 MB)
  • 0.21.1(Aug 19, 2022)

    New features / improvements

    • Update dependency to Newtonsoft.Json in PackageReferences sample to make Github security happy 023fa25d
    • [DebugSolution] Improve file sorting in the debug projects 69f48ab0
    • Add new utility method to find the common root path in a list of paths 61acf806
    • [Linux] Add new option to choose the C++ Standard Library to use: Linux.Options.General.StdLib 1425773e
    • Added apk name to fastbuild properties of agde fastbuild project file df08e4a5
    • added a /debugSolutionDevEnv cmdline to be able to customize the devenv... e39e31c1
    • support cpp20 for Xcode c9d24243
    • Add new Default entry for OpenMP option, to get the default compiler option and not write it in either bff nor vcxproj b5956f2a

    Bug fixes

    • Change implementation of Solution.Configuration.IncludeOnlyNeededFastBuildProjects to fix inconsistencies in sln and masterbff 4901d0bb
    • Fix arguments when debugging the functional tests from the sharpmake solution 00d29217
    • Ignore duplicated dll when present in the dotnet runtime 88e71724
    • Remove duplicate implementation of option XCode.Compiler.LibraryStandard 33c92c44
    • CI: Disable HelloAndroid until we find time to fix it following Github VM update f017b198
    • Fix the intellisense NMake parameter for C++17 04ba1128
    • Fix vs2022 override, RTM version started using the proper toochain version in VCInstallDir dd9358b9

    Full Changelog

    https://github.com/ubisoft/Sharpmake/compare/0.21.0...0.21.1

    Source code(tar.gz)
    Source code(zip)
  • 0.21.0(Jul 7, 2022)

    New features / improvements

    • Fix determinism in UnityResolver and introduce FragmentHashUnityResolver 69a9d688
    • [CI] Update Android build-tools version when symlinking dx.bat and dx.jar 36c74111
    • [AndroidSample] Update Gradle to 7.0.2, and remove now un-necessary workaround in the CI (symlinks of d8 to dx) - Replace/remove deprecated properties - Use JAVA11 96cbae21
    • [Android] Disable LTO by default on all optimizations 086298d5
    • Initial AGDE FastBuild support 2b0a96d2

    Bug fixes

    • [AndroidAgde] Multiple fixes for Android AGDE 4d5de640
    • [AndroidAgde|FastBuild] Fix librarian used with NDK above 22, as GNU binutils were removed we need to use LLVM binutils ff7c8e51
    • Fixed linking of shared libraries with AGDE 4067dace
    • Fixed constant recompiling issue with agde 59c3a162
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net472-0.21.0.zip(20.58 MB)
    Sharpmake-net5.0-Linux-0.21.0.zip(6.54 MB)
    Sharpmake-net5.0-macOS-0.21.0.zip(6.65 MB)
    Sharpmake-net5.0-Windows-0.21.0.zip(7.14 MB)
  • 0.20.2(Jun 13, 2022)

    New features / improvements

    • [Vcxproj] Add a property in conf to allow disabling the vc overrides when writing some vcxproj 83e8d148
    • Propagate WriteVcOverrides to FastBuildAll project 3244b755

    Bug fixes

    • Fix android build by removing inclusion of android native app glue 6d89058f
    • [Android] Fix compatibility of VS2019 props with recent NDKs by forcing HostTag 206808e7
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net472-0.20.2.zip(20.57 MB)
    Sharpmake-net5.0-Linux-0.20.2.zip(6.53 MB)
    Sharpmake-net5.0-macOS-0.20.2.zip(6.64 MB)
    Sharpmake-net5.0-Windows-0.20.2.zip(7.12 MB)
  • 0.20.1(Jun 6, 2022)

    New features / improvements

    • Add support for WinSDK 11 22H2 (10.0.22621) f5917635

    Bug fixes

    • custom pre-build steps ids were broken between the consumer and definition d16f0be7
    • [Bff|Linux] Fix regression when sysroot option is not used, the LinkerOptions was removed from the bff, creating errors 6d8a0bd5

    Full Changelog: https://github.com/ubisoft/Sharpmake/compare/0.20.0...0.20.1

    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net472-0.20.1.zip(20.57 MB)
    Sharpmake-net5.0-Linux-0.20.1.zip(6.53 MB)
    Sharpmake-net5.0-macOS-0.20.1.zip(6.64 MB)
    Sharpmake-net5.0-Windows-0.20.1.zip(7.12 MB)
  • 0.20.0(May 25, 2022)

    New features / improvements

    • [NuGet/C++] Add support for nuget packages in c++ * Rename existing PackageReference sample to CSharpPackageReference and add C++ version 281bd887
    • [Linux|Bff] Add new linux SysRoot PathOption 263f8b62
    • Add support for WarningsAsErrors for C# projects (#187) 85fc91cf
    • [.NET Core] Add options for PublishSingleFile and PublishTrimmed (#181) 5b0d2de5
    • Added support for FileVersion, Version, Product and Copyright fields in C# projects (#186) a0f691fa
    • Add support for 'nullable' field in C# projects (#188) 2c2e0992
    • Added support for Protobuf-includes in C# projects (#190) 487190da
    • Added proper support for .Net Core/.Net 5.0 C++/CLI project support (#194) cf1c3f2c
    • ClangForWindowsSettings : allow user to override LLVM's windows lib directory 1fcec5f4
    • Add the possibility for a platform to register extra stamp events f424cac9
    • Add an option FastBuildSupportLinkerStampList to FastBuildSettings, to indicate if the fastbuild exe that's used support multi stamping (that's a feature that's only in the internal fastbuild fork atm) f424cac9
    • Use the extra stamp events on linux to strip debug symbol info, that will fix un-necessary rebuilds when cross compiling with FastBuild for linux f424cac9
    • Inform msbuild to use static graph evaluation when restoring nuget packages, this should speed it up 41c6be9a
    • Add a property to IPlatformDescriptor indicating if the platform invokes the compiler for the link, which means that linker arguments need to be prefixed wit -Wl, with clang for instance e3142832
    • Support string macro of Android project 6608365f
    • Bump actions/checkout from 2 to 3.0.2 bffe1027
    • Use string macro directly on agde c56a17fc
    • Enable string macro on agde 4cdc5e98
    • [Linux] Add the option of stripping the debug symbols from the exe and keep them in a separate file a41b6f5f
    • Bump actions/upload-artifact from 2 to 3 920aade8
    • Bump actions/download-artifact from 2 to 3 59e49264
    • Add support for Rust projects 8020f251
    • Ignore case when sorting configurations in vsproj 867fe2f7
    • [Bff] Ignore case when sorting individual files alphabetically 09c0ee38
    • add support for buildMultitargeting and buildTransitive in AssetDependency e3a6eaab
    • Added support for FrameworkReference-elements to support proper method of including ASP.Net See https://docs.microsoft.com/en-us/aspnet/core/fundamentals/target-aspnetcore?view=aspnetcore-5.0&tabs=visual-studio da7eb708
    • Add support for the DefaultItemExcludes property in C# projects 6c7ab26a
    • [Errors] Add type name to parameter not found exception to help diagnose issue quicker. 5f895fe6

    Bug fixes

    • [Bff] Fix undeclared config error when multiple master bff are used and project bff contain multiple platforms 6fe596c3
    • [Linux|Vcxproj] Properly indent the vcxproj sections 260b72ab
    • Fix map file generation on Apple platforms, map needs to be lowercase for ld to understand it 12a6c9d1
    • fix: missing setter for conf.AddFastBuildProjectToSolutionCallback 42e14488
    • fix: C language std in bff b98be87c
    • Fixes an issue with Linux vcxproj generation. bffba15e
    • [Android|Vsproj] Filter the list of configurations by platform to fix retrieval of options that must be identical across all configurations fc45e27a
    • [Linux|Vcxproj] Improve conditional on the Globals property group to prevent polluting the x64 platform 3352f888
    • Fix typos in PackageReferences.AssetsDependency 8f9f24aa
    • Throw an error in case the platform toolset is not Default for Platform.agde f2aa5f80
    • Fix Android AGDE MSBuild overrides f9cc7da9
    • Fix base class call in Android platform 4f4791a1
    • Fix Android AGDE CppLanguageStandard 8d66bd5b
    • Make the Platform.agde comment follow xmldoc 7c5ec0bc
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net472-0.20.0.zip(20.57 MB)
    Sharpmake-net5.0-Linux-0.20.0.zip(6.53 MB)
    Sharpmake-net5.0-macOS-0.20.0.zip(6.64 MB)
    Sharpmake-net5.0-Windows-0.20.0.zip(7.12 MB)
  • 0.19.1(Mar 21, 2022)

    New features / improvements

    • Add support for mixed/partial .Net C++ projects 73ede621
    • [LinuxOnWindows] Add an option to set the PlatformToolset instead of hardcoding Remote_GCC_1_0 a760cc3b
    • [FastBuildAll] Propagate the first project conf options to the FastBuildAll conf ddde6211

    Bug fixes

    • Fixed issue with ApplicationIcon being written as absolute and not as relative. a17e80a4
    • Fix remote debugging and remove platform test from Sharpmake's core to put it in the linux module instead ccc243ae
    • Fix indentation and content of nmake vcxproj to closer match what VisualStudio does 9f9c4015
    • Remove $(ProjectDir) from linux nmake template, since it's plain wrong 9f9c4015
    • Make unix path conversion utilities public ee9f8b6c
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net472-0.19.1.zip(20.55 MB)
    Sharpmake-net5.0-Linux-0.19.1.zip(6.52 MB)
    Sharpmake-net5.0-macOS-0.19.1.zip(6.63 MB)
    Sharpmake-net5.0-Windows-0.19.1.zip(7.10 MB)
  • 0.19.0(Mar 8, 2022)

    New features / improvements

    • Add an option to allow the copy of pdb files to dependents even in Export projects 7b179a1b
    • [GithubActions] Prettify the xcodebuild output 1c9ad2dd
    • New xcode options (Single prelink) 3ac4925a
    • Add a ForceGenerateFastBuildAll flag in Solution. bf2435d9
    • Add FastBuildSettings.WorkspaceRoot, to optionally override the root directory under which paths can be expressed relative to one another in bff files (default is Project.RootPath). d15c5d15
    • [New][Bff] Record the unity files in the auto cleanup db, so we can auto remove stale ones a0c127ea

    Bug fixes

    • [CI] Force use windows-2019 for functional tests and samples bfe983dc
    • [Bff] Put the input files just after the output file in the linker node This can fix duplicate symbol issues when using lld-link that doesn't behave exactly as link when it comes to ordering 31e14856
    • Fix WinFormSubTypes serialization eba20e8c
    • convert CSProjSubTypeInfos fields to members 01a7d3bf
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net472-0.19.0.zip(20.55 MB)
    Sharpmake-net5.0-Linux-0.19.0.zip(6.52 MB)
    Sharpmake-net5.0-macOS-0.19.0.zip(6.63 MB)
    Sharpmake-net5.0-Windows-0.19.0.zip(7.10 MB)
  • 0.18.3(Jan 24, 2022)

    Important notes

    • Deprecate Solution.PerforceRootPath and Project.PerforceRootPath, scc info shouldn't be stored in project or solution files a7335d29

    New features / improvements

    • New experimental feature: allow skipping FastBuild projects from the solution when they are not really necessary The new behavior is activated by setting IncludeOnlyNeededFastBuildProjects to true in solution configure methods d4fefed1
    • Make Sln.SolutionExtension public 751b5c0b
    • Add support for VcxprojUserFile.LocalDebuggerAttach (#164) b061d7e6

    Bug fixes

    • Use master bff directory to compute customPreBuildExe, same as other steps 0f45d667
    • Fix missing define in generated debug solution d54a2128
    • Remove deprecated comment ac831efe
    • Fix UpdateSamplesOutput.bat to use the net5 binaries. Ran it too, to update generated "reference" folders. 016ec11d
    • Copy conf.FastbuildCacheAllowed and conf.FastbuildDistribution properties when generating FastBuildAll project. 2041aabf
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-net472-0.18.3.zip(20.54 MB)
    Sharpmake-net5.0-Linux-0.18.3.zip(6.64 MB)
    Sharpmake-net5.0-macOS-0.18.3.zip(6.62 MB)
    Sharpmake-net5.0-Windows-0.18.3.zip(7.10 MB)
  • 0.18.2(Jan 10, 2022)

  • 0.18.1(Dec 21, 2021)

  • 0.18.0(Dec 9, 2021)

    Important notes

    • Starting with this release, sharpmake is now built with net5, and requires the related runtime to run.
    • We still provide a .net 472 version just in case, but it is to be considered legacy
    • With net5 we provide one sharpmake release per OS, since the executables are now native apps
    • With net5, string.GetHashCode() will return a different result every time the app is ran. For that reason, we've introduced an extension method in sharpmake: GetDeterministicHashCode(), that keeps the old behavior

    Deprecation warnings

    • Deprecate old DotNetFramework that are not supported by MS anymore: 4.0, 4.5, 4.5 clientprofile (which didn't work since 4.5 didn't have a client profile version...), and 4.5.1 ea47e68f

    New features / improvements

    • Removed useless prebuild dependencies for fastbuild projects. 1a1c7d34
    • Log the used/unused configuration in different formats in /diagnostics mode to help fix them 8a57ef92
    • [C#] Add support for launchSettings.json and generate it by default instead of csproj.user in case the csproj use the new dotnet sdk format a2d891f9
    • Make the CsprojUserFileSettings class resolvable so we don't need to resolve it manually when we read from it bf9ea4ef
    • Disable dependent assemblies copy to the output dir in the functional tests. 0cc47207
    • Disable dependent assemblies copy to the output dir in the samples. c3aa5d47
    • Use the previously introduced GenerateDocumentationFile in sharpmake projects 784aada6
    • [C#] Add project boolean option GenerateDocumentationFile, false by default fc766867
    • Add .sh fles as items to Sharpmake solution ec79fb26
    • Add Sharpmake.Main as None to the Sharpmake.Application project to make it easier to edit 5cf8129c
    • Activate multi targeting, net472 and net5.0, and switch to net5.0 by default in all tests c40e1529
    • Add support for multiple post-build stamping operations of one target output... Sharpmake/sharpmake!252
    • Add a dependency to System.Text.Json nuget package when using net framework 4934480c
    • Add a utility method to get a deterministic hash code from a string, since with net core the default one is seeded and changes at each run of sharpmake 7373e97f
    • Enable determinism when compiling sharpmake and its modules 4cbe6944
    • [SharpmakeSln] Instead of excluding sharpmake files from the projects, mark them as None so we can see them in the solution 8f72d027
    • Lookup Sharpmake.References in the default references list, and warn in diagnostics mode if it's found, meaning it is redundant 95082165
    • [SharpmakeSln] Change solution items from a manually maintained list to an automatic one, and add python files as well 7eccd47b
    • Add support for Custom Property Groups in Fastbuild Sharpmake/sharpmake!250
    • Add support for .NET 6 4ff515ba
    • Add support for c# 10 fb06eb74
    • Update nuget dependencies versions 4af9a919
    • Add new entry to DotNetOS: maccatalyst c0257d63
    • Adding gradle support and CI for android sample project (#143) 1bce1900
    • feat(dotnet): add support for DotNetOSVersion on Configuration to tweak target framework version Sharpmake/sharpmake!245
    • Add support for WinSDK 11 (10.0.22000) e9c9732f
    • Initial support AGDE Sharpmake/sharpmake!239

    Bug fixes

    • [Vcxproj] Fix external warning tags, they need to be under the ClCompile and not the Configuration dbc23ace
    • Add a comment warning that in csproj the file exclusions are matching the full path which can create discrepancies depending on source code location for end users cdf8007c
    • Prevent All build from creating dependencies Sharpmake/sharpmake!218
    • Remove sharpmake nuspec, unused b9fe08a3
    • Fix typo in Intro.md f86a67f4
    • Remove use of system assemblies and instead use the ones from Basic.Reference.Assemblies nuget packages eb1eb41e
    • Update comments 03b72bb7
    • Fix copy/paste error in functional_test python script, we were using a variable that doesn't exist... 5a9b370f
    • Formatting fixes af245079
    • Fix compilation with NET6 by creating crypto provider with the base class static methods 0edbf827
    • Merge pull request #156 from kant/patch-4 84f70c22
    • Fix AGDE project issue when override MsBuildPath and AdditionalVcTargets Sharpmake/sharpmake!248
    • Fix #113: Fix multi-framework conditions Sharpmake/sharpmake!249
    • Remove values from Obsolete DotNetFramework entries, and set them to error. 1f1c28b4
    • Update copyrights 26528345
    • Formatting and style fixes. 4944e3d4
    • Merge pull request #152 from mundak/mundak/fastbuild_example b6b49842
    • Merge pull request #150 from kant/patch-3 c0a2bb8b
    • Merge pull request #149 from kant/patch-2 83fd5e45
    • Merge pull request #148 from kant/patch-1 c3fc06ff
    • Fix c/cpp language standard setting inconsistent for AGDE project Sharpmake/sharpmake!247
    • Fix document format errors Sharpmake/sharpmake!244
    • Disable compile HelloAndroidAgde action on github Sharpmake/sharpmake!243
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-0.18.0-net472.zip(20.54 MB)
    Sharpmake-0.18.0-net5.0-Linux.zip(6.64 MB)
    Sharpmake-0.18.0-net5.0-macOS.zip(6.62 MB)
    Sharpmake-0.18.0-net5.0-Windows.zip(7.10 MB)
  • 0.17.5(Oct 6, 2021)

  • 0.17.4(Sep 30, 2021)

  • 0.17.3(Sep 28, 2021)

    New features / improvements

    • Add system includes from ILinuxSystemPathProvider to NMakeIncludeSearchPath for correct Intellisense support e59c1c1c
    • Add CLanguageStandard/CppLanguageStandard to Linux MakeFile vcxproj for better Intellisense support e70b4cd0
    • Add NMakeForcedIncludes support to MakeFile/FastBuild projects for better Intellisense support ab87c9a5
    • Rename internal method to better match what it does 27306483
    • Added support for IsPublishable C# project config item (#144) ad2715dd
    • Make the Resolve method in Project virtual, override it from the CSharpProject so we can resolve some variables as path 2349b449
    • Add extension .sharpmake.cs to tmp files 365c783e
    • Log the name of the FastBuild project that's being added to the solution 87c5004d

    Bug fixes

    • Fix concurrency issue in ReportGenerated that could lead to a "key already existed in the dictionary" exception 5c8a3d2f
    • [Bff] Prevent adding projects that we can't build or don't output anything to the FastBuildAll project alias 62b0b480
    • Remove duplications from some lists in bff (most notably prebuild dependencies) 08bbfb71
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-0.17.3.zip(6.78 MB)
  • 0.17.2(Aug 23, 2021)

    New features / improvements

    • Verify that the fragment masks that are added can be applied on the target 147795a5
    • Add a utility method ClearFragmentMasks, to allow resetting the fragment masks 8ed52a44
    • Bump jurplel/install-qt-action from 2.13.2 to 2.14.0 (#140) c003b490
    • Clarify logs level (Error, Warning, ...) Sharpmake/sharpmake!236
    • [CSharp] Add support for warning level 5 with Options.CSharp.WarningLevel.Level5 3464e97b
    • Add support for /external:I and associated options with vs2019+ f5d24c06
    • Add new TranslateIncludes option in Options.Vc for vs2019+ 506aa1d2
    • Add new CppLanguageStandard.CPP20 entry in Options.Vc to allow enabling C++20 in vs2019+ e1999e87
    • Add support for Windows 10 SDK (10.0.20348.0), version 2104/21H1 68b55874
    • Resolve conf.IncludeSystemPaths against the SourceRootPath, same as Include and IncludePrivate 333b13ca
    • Bump Microsoft.CodeAnalysis.CSharp from 3.10.0 to 3.11.0 in /Sharpmake (#139) 62f11eb0
    • Initial support for vs2022. 877113e0
    • Add UseWpf / UseWindForms in C# projects options Sharpmake/sharpmake!234
    • Add use of libuuid in the HelloLinux sample to showcase how to do it. 88a627b6

    Bug fixes

    • [XCode] Fix output and intermediate dirs Sharpmake/sharpmake!160
    • Fix include system paths with non win64 platforms 9416e544
    • Fix rc compilation with external includes, we now always use the includes prefixed with the default prefix 97c6212a
    • [C#] Fix DotNetOS fragment handling and add a sample to demonstrate how to use it 1bca8c61
    • Fix unit-test exception type e05948f2
    • Fix: set AndroidAppLibName to TargetFileName Sharpmake/sharpmake!235
    • [Makefile] Fix regression on library prefixes, we now fixup the lib names same as the other generators. 06cd508d
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-0.17.2.zip(6.78 MB)
  • 0.17.1(Aug 4, 2021)

    New features / improvements

    • [MasterBff] Try and figure out if the source of the postbuild copies is an output of one of the targets, and if so move the Copy node declaration after the node that defines it, and add it as a PreBuildDependency 5ebdfe3a
    • Try and improve compile time of sharpmake and its tests in cmd line by passing /maxcpucount and /p:CL_MPCount to msbuild 21f3b2fe
    • [FastBuild] Set FastBuildSettings.SetPathToResourceCompilerInEnvironment to true by default fd3e9fcb
    • [FastBuild] Create a compiler node for rc.exe with the type custom 1d43dfb1
    • bring back the code that supported the use of the LLVM Platform Toolset 465c2a94

    Bug fixes

    • Fixing custom build step generation for FastBuild bcbfdeef
    • [Bff] Prevent the custom build steps from always running. If that becomes a requirement it needs to be implemented differently. 5f02688f
    • [FastBuild] Quick and dirty fix for Masm ml64.exe not being recognized by FastBuild 92369798
    • [Bff] Prevent generating the LibraryDependency Alias for the FastBuildAll project 70477004
    • [Bff] Fix LibraryDependency nodes in case the library generation was skipped by the option UseLibraryDependencyInputs.Enable 7b677013
    • [HelloClangCl] Add a use case for the UseLibraryDependencyInputs.Enable to make sure the issue we fixed at 7b67701 doesn't happen again 4257b4dd
    • [Bff] Remove empty line in the Library node header 104e975a
    • [Bff] Fix indentation of the first line in some nodes 6b8fda31
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-0.17.1.zip(6.75 MB)
  • 0.17.0(Jul 20, 2021)

    Important notes

    The way file extensions are handle have changed in this version! Sharpmake's previous behavior was that extensions could be given without a leading dot, for instance exe or dll, and sharpmake added it itself. This created some issues when we wanted an empty extension, for instance on linux.

    Sharpmake now expects you to write the full extension, so for instance .exe or .dll. To make that obvious, all the extensions variables have been renamed to be prefixed by "Full", or made Obsolete.

    Example, if before you were using StaticLibraryFileExtension, you now need to use StaticLibraryFileFullExtension.

    Deprecation / removal of features

    • MAJOR CHANGE to target/output names handling e4671da9
    • Rename a bunch of properties/methods and mark some Obsolete instead of changing their meaning, making the API change of e4671da9 more obvious 878b14f0
    • Deprecate vs2010/vs2012/vs2013, as well as their PlatformToolset 0adbd65e
    • Remove old .reg and .bat files used to register .sharpmake extension. We now use and recommend using .sharpmake.cs which make those irrelevant. ee3c8d03

    New features / improvements

    • Android build type Gradle support
    • Add a new ForcedIncludesFilters, allowing to only add forced includes on specific filters. Support only for MSBuild. 40358141
    • Resolve AdditionalSourceRootPaths before use 754233b8
    • Bump nuget packages to latest versions in Sharpmake.UnitTests 50d7f14a
    • Add android sample
    • Generate .Libraries dependency section using an alias containing only the output project, using the full alias in .PreBuildDependencies instead, to avoid trying to link with results from PostBuild events. 893e9b66
    • Add a post build execute step in the HelloClangCl sample to exhibit a bug 782a1eae
    • Add a TargetCopyFilesPath option to override TargetPath for TargetCopyFiles fd311773
    • Register an empty extension for OutputType.Utility, since same as OutputType.None, they don't output anything 648c03c1
    • [FastBuild] Add a setting to disable file copy validation. Use with care! 1365033b
    • Remove restriction in FastBuild generation for IgnoreImportLibrary when ExportDllSymbols is set to false 82b891ca
    • Add DLL dependencies without ExportSymbols as BuildOrder dependencies if needed. d4928330
    • Add support for other SDK installed version, by overriding VCTargetsPath. 6d549b9c
    • Removed strange limitation not allowing a DLL to depend on an exe project 16bbbf50
    • Added feature "AllowOutputDllCopy" to inhibit the target copy when depending on a dll f85bb894
    • Improved ProjectReferencesByPath, now in a container to allow more fine grained options efc6be73
    • Support for utility output type 3d79637a
    • Added support for solution folders per solution 59186269
    • Write the full path to the profile json file in the generated/skipped log output, for consistency with the other generators d05e6a8d
    • [FastBuild] Add CompilerFamily.CSharp and CompilerFamily.Custom e1d16f5c
    • Add Support to wait debugger on non-windows system 035fbca6
    • Add option to prevent trying to copy linker generated pdb files that don't exist on some platforms. This doesn't fix anything broken but allows the user to suppress copy errors. 31280852
    • Remove TargetFileName property from the NMake template since it's unused and was wrong anyway 7e7a7534
    • Bump Microsoft.CodeAnalysis.CSharp from 3.9.0 to 3.10.0 89d504f3
    • Bump jurplel/install-qt-action from 2.13.0 to 2.13.2 d69aecf4
    • Add dependabot yaml d5b75c7f
    • Update WinSDK used by FastBuild functional tests. fabcc7c1
    • Avoid putting all sources into noBlob when PrecompSource is set to empty string.
    • Add project EnableDefaultItems property (#122) 44e19f25
    • Support generate debug symbols for apple Fastbuild project
    • Update NuGet package dependencies 4d18b9f6
    • Rename batch files solution dir to PascalCase for consistency 69f7d4f4
    • Ask msbuild to print a summary after its invocation in CompileSharpmake.bat 1a62c271
    • Remove color in compile sharpmake batch file 13774e5d
    • HelloXCode sample fixes/improvements 99a6204c
    • [XCode] Sort properties in XCBuildConfiguration like XCode does a34d16d3
    • [XCode] Sort properties in XCBuildConfiguration_Project like XCode does 0f39d0cb
    • [XCode] Sort properties in legacy target alphabetically to match XCode 3ebb7c22
    • [XCode] Open bracket on the same line in PBXSourcesBuildPhase 698c5ca8
    • [XCode] Remove empty line in item lists 198a5556
    • [XCode] Write ProjectLegacyTargets in the proper location in the file to match XCode eb01bd01
    • [XCode] Remove target file from PBXBuildFile section 7f938eb3
    • [XCode] Order the items per uid in the written files to match XCode's behavior 0011eeb4
    • [FastBuild|Mac] Use unversioned MacOSX.sdk directory by default, which is a symlink to latest. 5a36a42b
    • vcpkg sample fixes/improvements 2326cfa7
    • Always prefix /sources argument with @ in the CsprojUserFile for the sharpmake samples c82b4b58
    • Improve SimpleExeLibDependency sample 32c23e12
    • HelloQTSample fixes/improvements 72c5fed5
    • PackageReferences sample fixes/improvements cb705667
    • Improve HelloWorld sample 51a2d5f3
    • NetCore samples improvements 9b696828
    • Remove unused sharpmake file from CSharpWCF 4f825620
    • ConfigureOrder sample fixes/improvements b265ef16
    • FastBuildSimpleExecutable sample fixes/improvements e9319284
    • Stop changing the working directory in the CompileSharpmake batch file 55248fd8
    • Add vcpkg sample to the solution 6192ab79
    • Add batch files and github actions to the solution as extra items c9ca86c4
    • [GithubActions] Fixes/improvements e81bb542
    • HelloLinux sample fixes/improvements 63e061e9
    • Make resolver throw an exception in case a variable that's resolved is null eaab74c7
    • [Csproj] ToolsVersion needs to be more global 681c6c8a

    Bug fixes

    • [Vcxproj|ClangCl] Fix vcxproj opening with PlatformToolset.ClangCl when LLVMInstallDir is overriden but the version is different from the one embedded in VS 6e705f86
    • Bff uses IgnoreSpecificLib options to also skip project dependencies instead of only external libraries, same as vcxproj 51c090c7
    • Fix dependency order for file custom build steps and target copy files, to ensure they're executed before the post-build steps, and that file custom build steps output are correctly linked against the executable (same as for MSBuild) fe022b9d
    • Fix undeterministic bff generation by sorting the dependencies by Guid 0527ada5
    • [Bff] Fix static lib extension in bff in case it doesn't start with a dot 647c1cef
    • Fix build order dependency from exe to exe not correctly added in FastBuild 8ae9ce68
    • Fix undeterministic sln generation, causing the solution to be reloaded at every generation, or rebuilds occuring when they shouldn't 16e2af4c
    • Fix wrong precompiled header paths for Android
    • Fix dependencies not using a sorted UniqueList, making it sometime undeterministic. 7dfefc8a
    • Account for CreateHotPatchableCode/Image when generating vcxproj/BFF from the template. 4c2a9578
    • Fixed debug project generator working directory 94838004
    • Fixed incorrect handling of only build order with csproj 973ad287
    • Fix analysis warning IDE0049: Name can be simplified 2ac6b5ff
    • Fix linux linker options Options.Linker.EditAndContinue.Enable, Options.Linker.InfoStripping.StringDebug and StripSymsAndDebug 6cfe8691
    • .PreBuildDependencies mismatch fix between Exec() and ObjectList() which uses it
    • Fixing invalid /sources command line parameters in the csproj.user file created via /generateDebugSolution f6bd9e99
    • Fix compilation of HelloClangCl sample with vs2019 16.10 by disabling /MP when using MSBuild a7be6238
    • Fix determinism in blob generation: use sorted source files list when computing blobs.
    • [XCode] Remove duplicated CONFIGURATION_BUILD_DIR variable from XCBuildConfiguration 51033e5a
    • [XCode] Fix typo in template, native was written instead of legacy 39e440f1
    • [FastBuild|XCode] Fix dll link by adding syslibroot to the linker arguments. afcab379
    • Fix CSharpVsix project 0aec8771
    • Fix CSharpImports sample so it can be built df0e48ad
    • Fix CPPCLI sample c7a6d2d5
    • Fix compile command db on github actions by setting win sdk to a more recent one. d4f6a695
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-0.17.0.zip(6.75 MB)
  • 0.16.1(Jun 21, 2021)

    Deprecation / removal of features

    • Remove support for old platforms (wii, wiiU, x360, ps3, nvshield) and mark their entries in the Platform enum Obsolete cdcb4e5

    Bug fixes

    • .PreBuildDependencies mismatch fix between Exec() and ObjectList() which uses that exect. OtherArguments command line from build step included now too in name calculation. f88b0f1
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-0.16.1.zip(6.66 MB)
  • 0.16.0(Mar 27, 2021)

    Deprecation / removal of features

    • Remove support for LLVM_vs2012 and LLVM_vs2014 PlatformToolsets, since they probably are broken anyway 7ff6ab2e
    • Remove code that has been marked Obsolete for a very long time b24704af
    • Remove deprecated TreatWarningAsError (notice the missing S at the end of warning) 6a454c19
    • Deprecate CommonLanguageRuntimeSupport.SafeMsilClrSupportOldSyntax value, since it has been removed in vs2008 or so 7ab57874
    • Rename SpectreMitigation.Enabled to SpectreMitigation.Spectre, and mark the old name Obsolete with a message 42b048df
    • Rename ShowProgress.DisplayAll and ShowProgress.DisplaysSome to ShowProgress.LinkVerbose and ShowProgress.LinkVerboseLib, and mark the old names Obsolete with a message a54cdc3d
    • Rename SubSystem.Application to SubSystem.Windows, and mark the old name Obsolete with a message c2a236ed

    New features / improvements

    • Added pre/post event commands to makefile gen and use them in HelloLinux sample
    • [GithubActions] Only generate mdb files in release on windows. 871b34d2
    • [GithubActions] Allow CI to continue on failure 446700dd
    • Lower unitests output path 1077fa50
    • Allow overriding the sharpmake executable in the debug project extension. 00b96802
    • Move path util methods to their own file. 5bc3a91a
    • [Vcxproj] Remove all the useless code setting Executable, Include and Library Path VC++ directories when using a LLVM platform toolset c167bc58
    • Improve gitignore to ignore all temp directories under the codebases bc81433b
    • Add HelloClangCl sample 5b55a560
    • Update embedded FastBuild executables to latest 1.04 67f4f57c
    • Create CODE_OF_CONDUCT.md 9a1a586a
    • Create CONTRIBUTING.md 8c4a80d1
    • Demote the obsolete errors to warnings in the SpectreMitigation and ShowProgress options when using the deprecated values, and map them to the proper ones 79ecc58d
    • Demote the obsolete from error to warning in the SubSystem option when using the deprecated value Application, and map it to Windows. 6626df34
    • Update OVERVIEW.md ae2a9c5e
    • Update Intro.md 69c1b65c
    • Update Intro.md ea04b677
    • Add new entries in MSVC ForceFileOutput linker option enum 19c433c4
    • Add new entry UseFastLinkTimeCodeGeneration in MSVC LinkTimeCodeGeneration linker option enum 6fdecb58
    • Add new entries in MSVC SubSystem linker option enum c2a236ed
    • Add new entries in MSVC ShowProgress linker option enum a54cdc3d
    • Document some msvc options, using info extracted from MS xml files d8c5212d
    • Add vs2013 VectorCall option Options.Vc.Compiler.CallingConvention.vectorcall 0633ff4e
    • Add vs2019 AVX512 option Options.Vc.Compiler.EnhancedInstructionSet.AdvancedVectorExtensions512 ce9e20ad
    • Add new entries SpectreLoad and SpectreLoadCF in SpectreMitigation option enum 42b048df
    • Document VC options CommonLanguageRuntimeSupport 7ab57874
    • Document VC options WarningLevel and TreatWarningsAsErrors 6a454c19
    • Document some msvc options, using info extracted from MS xml files 4432f46b
    • Add support for MSVC 16.7 Asan 10d49850

    Bug fixes

    • [Vcxproj] Linux debugging fixes
      • Lowercase drive letter in the various path, necessary because for some reason wsl mounts C: to /mnt/c
      • Ensure we have trailing slashes, otherwise VS will add the wrong slash to OutputDir if none is present
    • Removed wrong ending slash in OutDir and IntDir
    • Linux path: Lowercase drive letter. Ending slash.
    • Fix support for ClangCl PlatformToolset e6ae5fed
    • Wrap FastBuild executable in nmake build/rebuild commands with double quotes to fix invocation when ProjectDir contains spaces 13953499
    • Remove un-existing configurations from Pyproj
    • Fixed Sharpmake.Package attribute failing when using /generateDebugSolution
    • fix: add tmp to .gitignore 131f3e5e
    • fix(main): add AppDomain.UnhandledException to display exception details on all crashes 701e40c2
    • Catch all exceptions thrown by the read of the ReadCleanupDatabase. 0c7d8d42
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-0.16.0.zip(6.70 MB)
  • 0.15.1(Mar 3, 2021)

    New features / improvements:

    • [GithubActions] Upload sharpmake release artifacts ea12162e
    • Lower the sharpmake target path ad1602af
    • Add support for modifiers in resolvable strings, for now, only lower is supported. 755bcd7a
    • Give public access to Sharpmake.Generators.FastBuild.UtilityMethods
    • Remove try/catch/throw that broke exception callstack

    Bug fixes:

    • Compile runtime assembly in debug by default when builder context is null. 72f8ff40
    • Remove /debugScripts from the debug solution generation as well. 465166ed
    • Revert back to old behavior that compiles runtime assemblies in debug, because some code that relies on the Callstack (like current sharpmake file lookup) can misbehave when optim are active f2da9ba9
    • Fix display of warning messages of runtime assembly compilation when the compilation succeeds 46bab3d0
    • Fix determinism in fastbuid unity hash: was computing using absolute path projectPath
    Source code(tar.gz)
    Source code(zip)
    Sharpmake-0.15.1.zip(6.69 MB)
  • 0.15.0(Feb 15, 2021)

    Important notes

    • This release of sharpmake is one of the most important we've ever done since we switched to roslyn to allow support for recent C# versions (up to version 7) in your sharpmake files!

    • Support for double quotes when invoking sharpmake will be dropped soon, so please replace them with single quotes as soon as possible.

      For example:

        Sharpmake.Application.exe /sources("main.sharpmake.cs")
      

      needs to be changed to

        Sharpmake.Application.exe /sources('main.sharpmake.cs')
      

    New features / improvements

    • Make functional tests use vs2019 instead of vs2017 650bb8fa
    • Log more info on boot fc9c4fcf
    • Add support for Visual Studio 2019 /std:c11 and /std:c17 switches 4baf7e70
    • Add a way to copy to a subfolder in target path
    • Expose FASTBuild reproducible builds-related options in Sharpmake
    • Warn only on missing exclude
    • Print full FrameworkDisplayName on startup if possible. 4355cefb
    • Use new csproj file format for sharpmake and the debug project 9e90198d
    • Allow passing an optimisation to boostrap batch file a9a797f4
    • Improvements in utility methods on non windows platforms d328150e
    • Use RunningOnUnix instead of Mono to determine whether to lower the path or not in PathMakeStandard, which was the original intention 472d3ccd
    • Remove dependency to Microsoft.Build.Utilities.Core, and only consider one dotnet framework directory as source 04870612
    • Add a global SharpmakeDotNetFramework following the same principle as the c# version 7616310a
    • Minimal support globbing for csproj
    • Add linux binary of FastBuild 1.01, and adapt scripts 442eb155
    • Make Project.AfterConfigure virtual to allow user to override it, and be consistent with PreConfigure which is already virtual. c916d626
    • Improve dotnet Sdk support 4d648be4
    • Silence the warning if a kitsroot path is not found. 9bb8a20a
    • Use single quotes instead of double quotes in debug project start arguments since they are cross platform. 4dec87b0
    • Bump verbosity of the msbuild command used to build sharpmake to minimal instead of quiet 75add8cb
    • Add a global constant that contains the c# version sharpmake scripts support, c#7 at the moment 1626b49c
    • Add a release optimization in the debug solution, and add the newly created /debugScripts to the arguments in debug aa20a960
    • Add a new command line argument /debugScripts to allow compiling the sharpmake scripts in debug, to ease their debugging 895d89f6
    • Move back all sharpmake binaries so they are output in the same directory, tmp/bin/[Optim] 558bb752
    • Add an appilcation argument /generatedebugsolutiononly to only generate the...
    • Add net5 support 6f05d8b8
    • Expose the static FileSystemComparer instance as Default to allow its use in user code 2b62cadd
    • Add utility method to know if we are running on unix, and use it where it makes sense in the codebase instead of the IsRunningInMono b82bcfd7
    • Add utility method to know if we are using dotnet core instead of .net framework b82bcfd7
    • Log the os and the framework sharpmake uses on startup b82bcfd7
    • By default will now generate all csproj except the versioned ones in the tmp folder 7382ce9b
    • Added vcpkg sample
    • Add support for ExecAlways flag to BuildStepExecutable step 3744a356
    • Remove ResharperAnnotations from the codebase, we barely use it and it creates issues in client code. d6b4b133
    • Remove /profileoutput command line, since we now have the superior /profile e8738b5b
    • [FastBuild] Add new DLL dependency of vs2019 16.8 toolchain to the compiler section ba259268
    • [Sln] Order the executable retrieval by project filename to make the sln output deterministic 1f5f8888
    • Otpim: move type methods retrieval after we've checked that objectPath wasn't null d0f2fa4c
    • Print the nb of configurations in the profiler tag 3c242bd8
    • Fix templated project type names in profiler file a51bbd3b
    • Respect MSVC "conformance mode" compiler option in generated .bff files

    Bug fixes

    • Fix CompileSharpmake.bat so we return a proper exit code b41a62d3
    • Return a succesful exit code (0) if sharpmake is run with /help, but exit with error in case it is run without any arguments a0c0c7fe
    • Fix Framework display name with net5. f537c97b
    • Fix a failure in the MockPath unit tests.
    • Fix GetString, was always returning an empty string... 021a3310
    • Fix for library file with fullpath being wrongly reported as missing if no...
    • [Csproj] Use OrdinalIgnoreCase for sorting because for some reasons InvariantCulture changes depending on the machine... 22af20b9
    • Use AssemblyBuilder namespace instead AppDomain.CurrentDomain to be netcore compliant. cfb534cb
    • Bug fix: missing project configurations in solution when using multiframework
    • Use Location instead of CodeBase to initialize the fake path prefix, since the latter throws starting with .NET 5.0 50f1142f
    • [Profiling] Fix the solution type that wasn't displayed in the profiling json 4dd97a16
    • [Makefile] Fix sorting of include/lib paths and files, the weight set in the orderable strings wasn't taken into account 43e1d794
    Source code(tar.gz)
    Source code(zip)
  • 0.14.6(Oct 22, 2020)

    New features / improvements

    • Add support for CustomTargetsFiles in csproj
    • Add ProduceReferenceAssembly option for csproj
    • Allow Sharpmake to dump profiling tags as a JSON that can be opened in Chrome

      Add /profile("c:\path\to\file.json") to the command line, and open the file by navigating to chrome://tracing.

    Bug fixes

    • [Bff] Fix intermittent bug when collecting natvis files.
    Source code(tar.gz)
    Source code(zip)
  • 0.14.5(Oct 12, 2020)

    Important notes

    • .net framework v2 and v3 have been deprecated

    New features / improvements

    • Allow fragment values to be marked obsolete without triggering an exception in case their value is not valid ff0d40d2
    • Added support for .NET Framework 4.8 project generation 0abf3f5d
    • The path to the .bff file in the FastBuildAll .vcxproj is no longer an absolute path. d74576b5
    • The names of Exec, Copy & Test buildsteps are now independent of the absolute project root path. 897d2d85
    • Added FastBuild PreBuildDependency support for Pre/PostBuildEvents.
    • 2 Sharpmake optims 09f86a1e
    • Add Ubuntu to appveyor 46fed7a3
    • Resolve conf.BaseIntermediateOutputPath and conf.XmlDocumentationFile so they can be given relative to SourceRootPath 7ee54a2e
    • Add new copy advanced properties introduced in VS2019 16.7
    • Collect natvis files from dependencies for dll & exe
    • [Vcxproj] Allow explicit specification of object file paths for only a subset of source files.
    • Add support to dotnetstandard (all versions) and conditional ItemGroup in case...
    • [Clang] Add Clang C standart, and add value to Clang Cpp/C standart in CommandLineOptions
    • Add ClangCL PlatformToolset entry to support the official llvm2019 VS extension

    Bug fixes

    • Fixup obsolete fragment values of -1, and rather allow giving a fallback fragment value. 3dd5c9d8
    • Also deprecate .net framework 3.0, minimum supported is 3.5 4437a8ca
    • [ClangForWindows] Fix -nostdinc additional parameter:
    • Fix handling of empty conf.XmlDocumentationFile and conf.BaseIntermediateOutputPath properties b4c362c2
    • [CSharp] Fix BaseIntermediateOutputPath (and probably other properties) 044dc24c
    • [Makefile] Fix implicit defines. 8f56568d
    • [Makefile] Fix output file name prefix with OutputType.Dll. 10c6aa8f
    • [XCode] Remove duplicates of frameworks files and sort them
    • Fix string macro failed the compile for Android
    • [XCode] Fix test of output type, it's not a flag. 0a3e75df
    • [Bff] Fix crash when a source directory is empty of source files that can be blobbed c474ab9b
    • [Csproj] Fix regression introduced by 21ae290, the references weren't sorted anymore
    • [Vcxproj|Linux] Always set application type revision in linux vcxproj even for fastbuild projects to fix debugging d95ab5a2
    • Alpine adding PlatformRemoteTool clang select
    • Fix masterbff casing errors
    • [XCode] Keep source files into solution to be able to navigate into them
    • Fix configure attributes cache 260e4009
    Source code(tar.gz)
    Source code(zip)
  • 0.14.4(Jul 23, 2020)

  • 0.14.3(Jul 20, 2020)

    New features / improvements

    • [HelloXCode] Rename static_lib2 so it contains a space, to validate that include paths are properly escaped

    Bug fixes

    • [XCode] Fix resource build phase. Only process source files to prepare source build phase.
    • Fix defines in JSON compilation db
    • [FastBuild] Revert the move of the double quotes after the prefix, since FastBuild doesn't expect arguments to be wrapped.
    Source code(tar.gz)
    Source code(zip)
  • 0.14.2(Jul 16, 2020)

    New features / improvements

    • [XCode] Harmonize use of tabs in xcodeproj files

    Bug fixes

    • New fix to IncludeSystemPaths for MSBuild + MSVC
    • Fix functional_test base class so it uses the new style
    • [FastBuild] Fix preprocessor definitions taking a string argument
    Source code(tar.gz)
    Source code(zip)
  • 0.14.1(Jul 15, 2020)

    New features / improvements

    • Allow Fastbuild executable projects to be generated individually.
    • [Android] Specify the name of the AppLib in the Android Package
    • Add a TryGetFragment method to retrieve a fragment only if it exists without throwing an exception
    • [DebugSolutionGenerator] Remove the convoluted code to detect if we should use the local sharpmake DLL, since from the core's perspective, it should always be the case
    • [HelloXCodeSample] Add as an example a define with a string value containing a space
    • [XCode] Add possibility to force quotes in list and item formatter, and use it
    • [XCode] Add a GenerationContext (thanks to Guillaume Buchle)
    • [XCode] Add new Options for XCode projects
    • Add new utility method to test the existence of a typed option in a configuration
    • [XCode] Add strip linked product option
    • [ClangForWindows] Standardize the path passed by the user
    • [XCode] Add support for legacy targets and FastBuild
    • [FastBuild] Experimental: a fastbuild project configuration will now keep a list of the master bff path it appears in
    • [FastBuild|Vcxproj] Rename the internal NMake command generator to better match what it is and does
    • [Util] Add Resolve and fix case methods for string and generic enumable types
    • [Clang] Add Target Triple generator
    • Add utility method to return the platform executing sharpmake
    • Update FastBuild executable to 1.01 version, and add osx version
    • [XCode] Change the product type for OutputType.Exe to tool instead of application
    • [XCode] Add Enable Bitcode to options
    • [Optimization] Regex match cache
    • Add simple binding redirect to latest referenced version in Builder
    • Updates pyproj generator to be compatible with vs2017+ versions
    • Fix to enable FastBuild on other IDE than VisualStudio
    • [XCode] Enable fastbuild generation xcode
    • [IOS] Add FastBuild support for iOS
    • Have sharpmake generate a default .csproj.user for each sample to ease their debugging
    • Add new sample, HelloXCode
    • [XCode] Add support for OutputType.Dll
    • [XCode] Disable exceptions by default, for consistency purposes with other platforms
    • Added GeneratedAssemblyConfig for C# projects
    • [XCode] Change the default LibraryStandard to LibCxx to match recent XCode versions
    • Experimental! In vcxproj, in case we've overriden the vs install, set the variable in the vcxproj to disable installed VCTargets use.
    • Change the way Vc overrides work with vs: we don't write the global VCTargetsPath anymore, since this is very error prone
    • Add a new extension method to retrieve the vcTargetsPath and vcInstallDir keys to use per devenv in the vcxproj files
    • Add new utility method to retrieve the default devenv corresponding to a platform toolset. Will return null if unknown.
    • Add new extension method to retrieve the VCTargetsPath corresponding to a devenv
    • Add an accessor to know if the kits root for a particular devenv has been overriden
    • Add a new untyped option container, to allow an option to take whatever as argument, like another option
    • Make the GetLLVMOverridesSection method public so it can be accessed from platform modules
    • New FastBuildSettings option: FastBuildNoSummaryOnError, false by default

    Bug fixes

    • [Android] Fix the Cpp standard for Visual Studio
    • [XCode] Fix Xcode duplication of build phases
    • Removed logic in BuildStepCopy that determined IsFileCopy based on a '.' in the destination path
    • [Vcxproj] Disable use of versioned VCTargets key when importing default props, for some reasons it breaks loading old vcxproj in recent visual studio
    • [FastBuild][XCode] Fix defines in XCodeProj and Bff
    • [XCode] Fix XCode Scheme option, missing template declaration
    • [Util] Fix Windows platform detection, use correct PlatformID
    • [XCode] Only add one product per target, and its output file
    • [XCode] Set proper prefix to output files
    • [XCode] Fix BuildableName prefix in case of DLL output
    • Restrict type probing to visible ones when looking for builder event attributes to prevent exceptions with mono
    • enforce bash for .sh scripts
    • [XCode] Fix single element format with space
    • [XCode] Use tabs in the xcodeproj template to match what XCode writes.
    • [XCode] Fix OutputType.None, and workaround for IosApp and IosBundle output types
    • [Apple|FastBuild] Add the platform library files
    • [Apple|FastBuild] Workaround to get the map file properly generated
    • [Apple|FastBuild] Fix output type and extension
    • [Apple] Move SDK root setting to the base apple platform instead of iOS, and implement it on MacOS
    • Use Path combine to create the path of the map file
    • [Apple] TODO: UseThinArchives cannot use the linux linker option
    • [Mac|FastBuild] Move most of the code from iOsPlatform to the BaseApplePlatform, since they are non specific
    • [FastBuild] Fix quotes macos for defines and include path
    • [FastBuild] Only write the Environment section if a bff has at least a config needing it
    • [FastBuild] Fix the TEMP environment variable for MacOS
    • Only fill manifest tool options in case visual studio is used
    • [Apple] Move non-specific code from iosPlatform to base Apple Platform
    • Fix project generation issues on Android.
    • [XCode] Fix space in configuration name
    • [XCode] Fix list format
    • Add scriptable build phase XCode
    • Disable compile stage fastbuild xcode
    • Fix typo in default sample sharpmake main extension...
    • Formatting and license headers fixes
    • [XCode] Fix libary files and path management
    • [XCode] Readability improvement: use auto properties in more classes
    • [XCode] Update template to have open brackets on the same line as equal sign, closer to what XCode generates
    • [XCode] Fix scheme file optimization: write the first configuration target name instead of hardcoding Debug
    • [XCode] Change default archs value to 64_BIT only
    • [XCode] Fix source files excluded from build
    • [XCode] Add utility methods to write list of string items, properly formatted
    • [XCode] Fix MachOType for OutputType.Dll
    • [XCode] Move setting of ProvisioningStyle with ProvisioningProfile
    • Sort sample classes by name, help my sanity
    • Fix XCode output Path for static libraries
    • Fixed compile error of AssemblerContext in SharpmakeFileParserTest.
    • Allow new defines at parsing stage
    • [XCWorkspace] Remove duplicated call to GetCapitalizedPath
    • Fix multidots in resolver exception message when printing subobjects properties
    • Fix CURRENT_DIR in .sh files, in case the script is called from another one
    • Fix systemIncludes in vcxproj in case no include path was previously set
    • Fix discrepancies between MT and non MT generations.
    • Stop parsing of sharpmake files in case the first line begins with namespace
    • Fix ResolvedDependsFiles, it shouldn't contain TargetCopyFiles
    • Add support for CPP 17 in Xcode
    • Fix dynamic library dependency when you change OutputExtension option
    • Add DS_Store to gitignore
    • [FastBuild] Fix Link of IosApp for FastBuild conf
    • Use the versionned VCTargetsPath variable in case vs is overriden to get the correct props/targets imported.
    • In new NetCore project .csproj, we can support multiple DotNet framework in the same .csproj. When finding multiple frameworks, Sharpmake will automatically switch to new netcore projects schema to properly support multiple framework configuration. We had to tweak .sln generation to avoid duplication in configuration name in that case, MSBuild support compiling all targets for a configuration name.
    • Use proper devEnv value when retrieving the CppPlatformFolder
    Source code(tar.gz)
    Source code(zip)
Owner
Ubisoft
Ubisoft open source projects.
Ubisoft
A Visual Studio extension that provides enhanced support for editing High Level Shading Language (HLSL) files

HLSL Tools for Visual Studio This extension is for Visual Studio 2017 / 2019. Go here for the Visual Studio Code extension. HLSL Tools is a Visual Stu

Tim Jones 433 Dec 27, 2022
A Visual Studio extension containing a collection of tools to help contributing code to the Chromium project.

VsChromium VsChromium is a Visual Studio Extension containing a collection of tools useful for editing, navigating and debugging code. VsChromium was

The Chromium Project 258 Dec 30, 2022
A CANopen protocol for all systems such as embedded, PC, etc.

Easy CANopen Easy CANopen is a protocol for shaping the CAN-bus message in a specific way that suits industrail automation. CANopen is a very difficul

Daniel Mårtensson 25 Jan 4, 2023
Small commandlet for generating a complete project using UE4SS header dump, Project File and Plugin Manifest

UE4GameProjectGenerator Small commandlet for generating a complete project using UE4SS header dump, Project File and Plugin Manifest Usage Compile the

null 8 Nov 27, 2022
Is this hardware solution the ultimate in switch bounce elimination? Simple PCB, cheap components = final solution!

#230 Ultimate Switch Bounce Eliminator Direct link to video: https://youtu.be/b2uUYiGrS5Y It's time to try a final, alternative approach to the ubiqui

Ralph Bacon 7 Nov 7, 2022
A D++ Discord Bot template for Visual Studio 2019 (x64 and x86)

D++ Windows Bot Template A D++ Discord Bot template for Visual Studio 2019 (x64 and x86, release and debug). The result of this tutorial. This templat

brainbox.cc 28 Dec 24, 2022
A general solution to simulate execution of virtualized instructions (vmprotect/themida, etc.).

vmp_runner A general solution to simulate execution of virtualized instructions (vmprotect/themida, etc.) based on Unicorn. 一个基于Unicorn模拟执行虚拟化指令(vmpro

kakasasa 52 Dec 28, 2022
Bungie's Oni modified so it compiles with Microsoft Visual Studio 2019.

OniFoxed What's this? This is a modified variant of the recently leaked Oni source code so that it compiles under Microsoft Visual Studio 2019 with so

Mark Sowden 59 Dec 2, 2022
A Visual Studio template used to create Cobalt Strike BOFs

Introduction Cobalt Strike beacon object files (BOFs) is a feature that added to the beacon in order to allow rapid beacon extendibility in a more OPS

Securify 163 Dec 28, 2022
Visual Studio Extension that installs additional color themes

Using this Extension Download and install the extension Restart Visual Studio Navigate to Tools > Options > Environment > General and select your colo

Microsoft 328 Dec 19, 2022
Visual Studio Test Adapter for Catch2

Test Adapter for Catch2 Within Visual Studio, the Test Explorer is a convenient way to run and debug unit tests. This test adapter adds support for th

null 95 Dec 25, 2022
Visual Studio native debugger extension to help debug native applications using Mono.

Unity Mixed Callstack UnityMixedCallstack is a Visual Studio 2017/2019 extension to help debug native applications embedding Mono, like Unity. If you

Unity Technologies 83 Nov 28, 2022
Useful UE4 Visual Studio extensions.

UE4 Smarter Macro Indenting This extension was designed to fix the unnecessary and annoying "smart" indenting that Visual Studio likes to do around va

Chris Pawlukowsky 250 Dec 16, 2022
Half-Life Singleplayer SDK 2.3, updated to compile with Visual Studio 2019. Provided as-is with no further support. See the README for more information.

Half Life 1 SDK LICENSE Half Life 1 SDK Copyright© Valve Corp. THIS DOCUMENT DESCRIBES A CONTRACT BETWEEN YOU AND VALVE CORPORATION (“Valve”). PLEASE

Sam Vanheer 6 Oct 10, 2022
Cross-platform tool to extract wavetables and draw envelopes from sample files, exporting the wavetable and generating the appropriate SFZ text to use in a suitable player.

wextract Cross-platform tool to extract wavetables and draw envelopes from sample files, exporting the wavetable and generating the appropriate SFZ te

Paul Ferrand 9 Jan 5, 2022
Contains Algorithms and Competitive Programming sites solutions (codeforces, codechef, etc.)

✨ hacktoberfest2021 ?? ?? Contributing to hacktoberfest 2021 Welcome to hacktoberfest 2021 Public Repository. ????‍?? A month-long celebration from Oc

null 13 Oct 22, 2022
The pico can be used to program other devices. Raspberry pi made such an effort. However there is no board yet, that is open-source and can be used with OpenOCD as a general-purpose programmer

pico-probe-programmer The pico can be used to program other devices. Raspberry pi made such an effort. However there is no board yet, that is open-sou

martijn 22 Oct 15, 2022
RRxIO - Robust Radar Visual/Thermal Inertial Odometry: Robust and accurate state estimation even in challenging visual conditions.

RRxIO - Robust Radar Visual/Thermal Inertial Odometry RRxIO offers robust and accurate state estimation even in challenging visual conditions. RRxIO c

Christopher Doer 63 Dec 20, 2022
Visual Leak Detector for Visual C++ 2008-2015

Visual Leak Detector Introduction Visual C++ provides built-in memory leak detection, but its capabilities are minimal at best. This memory leak detec

Arkady Shapkin 908 Jan 8, 2023