| # Take a C# shared library and link it to a managed C++ shared library |
| cmake_minimum_required(VERSION 3.10) |
| project (CSharpLinkFromCxx CXX CSharp) |
| |
| add_library(CSharpLibrary SHARED UsefulCSharpClass.cs) |
| |
| # we have to change the default flags for the |
| # managed C++ project to build |
| string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
| string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) |
| |
| # The C# project is a dependency of the C++/CLI project |
| add_library(ManagedCppLibrary SHARED UsefulManagedCppClass.cpp UsefulManagedCppClass.hpp) |
| target_compile_options(ManagedCppLibrary PRIVATE "/clr") |
| target_link_libraries(ManagedCppLibrary PUBLIC CSharpLibrary) |
| |
| # Main executable for the test framework |
| add_executable(CSharpLinkFromCxx CSharpLinkFromCxx.cs) |
| target_link_libraries(CSharpLinkFromCxx PRIVATE ManagedCppLibrary) |