All Projects → ubisoft → Sharpmake

ubisoft / Sharpmake

Licence: apache-2.0
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.

Programming Languages

csharp
926 projects

Projects that are alternatives of or similar to Sharpmake

Asm Dude
Visual Studio extension for assembly syntax highlighting and code completion in assembly files and the disassembly window
Stars: ✭ 3,898 (+543.23%)
Mutual labels:  visual-studio
Prism
Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Xamarin Forms, and Uno / Win UI Applications..
Stars: ✭ 4,842 (+699.01%)
Mutual labels:  visual-studio
Darkui
Dark themed control and docking library for .NET WinForms.
Stars: ✭ 539 (-11.06%)
Mutual labels:  visual-studio
Azuredevopslabs
Learn how you can plan smartly, collaborate better, and ship faster with a set of modern development services with Azure DevOps.
Stars: ✭ 413 (-31.85%)
Mutual labels:  visual-studio
Wdbgark
WinDBG Anti-RootKit Extension
Stars: ✭ 450 (-25.74%)
Mutual labels:  visual-studio
Shades Of Purple Vscode
🦄 Shades of Purple — A professional theme with hand-picked & bold shades of purple to go along with your VSCode. Reviewed by several designers and 75+ theme versions released to keep it updated. One of the top rated best VSCode themes on VS Code Marketplace. Download →
Stars: ✭ 486 (-19.8%)
Mutual labels:  visual-studio
Cmakeconverter
This project aims to facilitate the conversion of Visual Studio to CMake projects.
Stars: ✭ 387 (-36.14%)
Mutual labels:  visual-studio
Server
Mangos ZERO is a server for World of Warcraft. The server serves full world content including authentication & scripts support. Compatible with World of Warcraft clients 1.12.1-1.12.3 - Report all issues at https://www.getmangos.eu/bug-tracker/mangos-zero/
Stars: ✭ 578 (-4.62%)
Mutual labels:  visual-studio
Dwarfcorp
An open-source 3D colony management game for PC, Mac and Linux
Stars: ✭ 460 (-24.09%)
Mutual labels:  visual-studio
Equinoxproject
Full ASP.NET Core 5 application with DDD, CQRS and Event Sourcing concepts
Stars: ✭ 5,120 (+744.88%)
Mutual labels:  visual-studio
Codeconverter
Convert code from C# to VB.NET and vice versa using Roslyn
Stars: ✭ 432 (-28.71%)
Mutual labels:  visual-studio
Windowscommunitytoolkit
The Windows Community Toolkit is a collection of helpers, extensions, and custom controls. It simplifies and demonstrates common developer tasks building UWP and .NET apps for Windows 10. The toolkit is part of the .NET Foundation.
Stars: ✭ 4,654 (+667.99%)
Mutual labels:  visual-studio
Angularwebpackvisualstudio
Template for ASP.NET Core, Angular with Webpack and Visual Studio
Stars: ✭ 497 (-17.99%)
Mutual labels:  visual-studio
Professionalcsharp7
Code samples for the book Professional C# 7 and .NET Core 2.0 (with updates for 2.1), Wrox Press
Stars: ✭ 403 (-33.5%)
Mutual labels:  visual-studio
Chutzpah
Chutzpah is an open source JavaScript test runner which enables you to run unit tests using QUnit, Jasmine, Mocha and TypeScript.
Stars: ✭ 549 (-9.41%)
Mutual labels:  visual-studio
Neuralnetwork.net
A TensorFlow-inspired neural network library built from scratch in C# 7.3 for .NET Standard 2.0, with GPU support through cuDNN
Stars: ✭ 392 (-35.31%)
Mutual labels:  visual-studio
Msbuild
The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.
Stars: ✭ 4,643 (+666.17%)
Mutual labels:  visual-studio
Vswhere
Locate Visual Studio 2017 and newer installations
Stars: ✭ 599 (-1.16%)
Mutual labels:  visual-studio
Entityframework Reverse Poco Code First Generator
EntityFramework Reverse POCO Code First Generator - Beautifully generated code that is fully customisable. This generator creates code as if you reverse engineered a database and lovingly created the code by hand. It is free to academics (you need a .edu or a .ac email address), not free for commercial use. Obtain your licence from
Stars: ✭ 562 (-7.26%)
Mutual labels:  visual-studio
Fast float
Fast and exact implementation of the C++ from_chars functions for float and double types: 4x faster than strtod
Stars: ✭ 510 (-15.84%)
Mutual labels:  visual-studio

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 Sharpmake.Application/bin/Release. You can run the deploy_binaries.py script to automatically fetch the binaries and copy them in a Binaries folder.

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].