# test if CSharp application correctly links # to managed C++ binary cmake_minimum_required(VERSION 3.10) project (CSharpLinkToCxx CXX CSharp) # 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}) add_library(CLIApp SHARED cli.hpp cli.cpp) target_compile_options(CLIApp PRIVATE "/clr") add_executable(CSharpLinkToCxx csharp.cs) target_link_libraries(CSharpLinkToCxx CLIApp) # this unmanaged C++ library will be added to the C#/.NET # references of CSharpLinkToCxx but it will show a warning # because it is unmanaged add_library(CppNativeApp SHARED cpp_native.hpp cpp_native.cpp) target_link_libraries(CSharpLinkToCxx CppNativeApp) # Link a static C++ library into the CSharp executable. # We do not actually use any symbols but this helps cover # link language selection. add_library(CppStaticLib STATIC cpp_static.cpp) target_link_libraries(CSharpLinkToCxx CppStaticLib)