Commit 51865fc6 authored by Michael Stürmer's avatar Michael Stürmer

Vs: allow CSharp targets to be linked to CXX targets

Fixes: #16755
parent b7799f07
......@@ -3475,10 +3475,6 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
->TargetIsFortranOnly(dt)) {
continue;
}
if (csproj == this->ProjectType &&
!this->GlobalGenerator->TargetIsCSharpOnly(dt)) {
continue;
}
this->WriteString("<ProjectReference Include=\"", 2);
cmLocalGenerator* lg = dt->GetLocalGenerator();
std::string name = dt->GetName();
......
......@@ -331,6 +331,7 @@ if(BUILD_TESTING)
if(${CMAKE_GENERATOR} MATCHES "Visual Studio ([^89]|[89][0-9])")
ADD_TEST_MACRO(CSharpOnly CSharpOnly)
ADD_TEST_MACRO(CSharpLinkToCxx CSharpLinkToCxx)
endif()
ADD_TEST_MACRO(COnly COnly)
......
# test if CSharp application correctly links
# to managed C++ binary
cmake_minimum_required(VERSION 3.9)
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)
#include "cli.hpp"
using namespace System;
namespace CLIApp {
void MyCli::testMyCli()
{
Console::WriteLine("#message from CLIApp");
}
}
#pragma once
namespace CLIApp {
public
ref class MyCli
{
public:
void testMyCli();
};
}
using System;
using CLIApp;
namespace CSharpLinkToCxx
{
internal class CSharpLinkToCxx
{
public static void Main(string[] args)
{
Console.WriteLine("#message from CSharpLinkToCxx");
var app = new MyCli();
app.testMyCli();
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment