finitereality / finite.cpp.sdk Goto Github PK
View Code? Open in Web Editor NEW(Work in Progress) C/C++ compilation support for .NET Core projects
License: Other
(Work in Progress) C/C++ compilation support for .NET Core projects
License: Other
Two-way bindings without much hassle should be possible, eventually. I think this will likely take the form of a separate package reference to extend the build based on which SDK is being used.
For sharing types between managed and unmanaged, there are multiple routes that would likely need to be taken:
Some examples of the desired XML:
<Project Sdk="Finite.Cpp.Sdk">
<ItemGroup>
<PackageReference Include="Finite.Cpp.Sdk.DotNetExports" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="path/to/project.csproj" GenerateExports="true" />
</ItemGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="Finite.Cpp.Sdk.NativeExports" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="path/to/project.cxxproj" GenerateExports="true" />
</ItemGroup>
</Project>
What file extensions do we want for C/C++ projects?
vcxproj
might be compatible with existing systems, but will likely blow everything else up. MSFT might also not be happy that we stole their extensioncproj
and cxxproj
are incompatible with everything current, but this guarantees we aren't stepping on anybody's feetBecause this would be totally useless without this! :)
Overall idea so far is to separate compile and link into separate steps to allow incremental builds. Tasks under src/Tasks/
roughly follow this.
Open questions:
NativeCXX.targets
mockup from Thermite has very platform-dependent options<StandardVersion>c++17</StandardVersion>
we'd need some database mapping these options)Right now it's just set to $ORIGIN
, which works in a lot of cases, but probably won't work in all cases (e.g. dynamically loaded plugins)
We'll need to write a CPS... something or other for this. I'm not the most familiar with Visual Studio internals, so my efforts until now have mostly been focused on the .NET and MSBuild command line.
This is an absolute must because it makes MSBuild in .NET Core so much nicer to work with.
https://github.com/microsoft/msbuild/blob/master/documentation/ProjectReference-Protocol.md
Assuming this is up to date, we could reference it while implementing ProjectReference support for our own projects. We should be careful to not trip up everything else though.
Goal is to have something comparable to CMake, so the information we need to detect is:
How do we want to do packages? There are three options I see:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.