Skip to content

Cross‑platform .sln / .vcxproj generation (Linux/macOS) for MSBuild + Rider #453

@van800

Description

@van800

Hi,

I’d like to start a new discussion around supporting Sharpmake‑based C++ solutions in JetBrains Rider on Linux and macOS.
This is about generating standard .sln / .vcxproj files, and understand whether this is something you’d also want to use for Ubisoft’s own projects.

In the previous JetBrains initiative, PR #248 – Rider IDE project model support, the idea was to dirrectly use Sharpmake’s internal model in Rider. That PR is still open and has some interest from the community, but the idea is dead.

Now we’re exploring a different direction:

Goal: make Sharpmake’s generated .sln / .vcxproj files usable with MSBuild and Rider on Linux/macOS (in addition to Windows), so Sharpmake projects “just work” with cross‑platform MSBuild‑based tooling. Potentially mingw support on Windows may be added later.

Existing working examples

rider-cpp-msbuild prototype
A small repo that demonstrates cross‑platform MSBuild C++ projects with Rider:
https://github.com/JetBrains/rider-cpp-msbuild
Here MSBuild drives g++/clang++ to discover include paths and defines. It proves that “MSBuild + vcxproj on Linux/macOS” is technically feasible, even if the repo itself is a prototype at this point.

Godot (battle‑tested)
The Godot Engine uses .sln / .vcxproj in a similar cross‑platform way. The key difference is that SCons already knows all the compilation details (includes, defines, etc.) and writes them explicitly into the .vcxproj related .props / .targets files.
I think this is closer to what Sharpmake could potentially do, if Sharpmake’s internal model has enough information about each configuration.

Maintainer interest / ownership:

Would there be interest in using such cross‑platform .vcxproj generation for the Ubisoft projects?
Or this sounds like as a pure community driven feature maintained primarily by external contributors?

Best,
Ivan Šachov (van800)
Member of the JetBrains Rider GameDev team

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions