summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-06-21 12:46:12 (GMT)
committerBrad King <brad.king@kitware.com>2017-06-21 12:46:12 (GMT)
commitfff7d8c666e436d9a1a33865d87668e9cf6ff0da (patch)
treea89c2d67cd8d7fe0cd7dbef1fb74d8268835b93b
parentab4c3270ae7062a8f3296055b9f6443b80f3aef2 (diff)
parent51865fc67ecd61d9cbf984be0310f2e9fb8ff455 (diff)
downloadCMake-fff7d8c666e436d9a1a33865d87668e9cf6ff0da.zip
CMake-fff7d8c666e436d9a1a33865d87668e9cf6ff0da.tar.gz
CMake-fff7d8c666e436d9a1a33865d87668e9cf6ff0da.tar.bz2
Merge branch 'vs_csharp_link_to_managed_cxx' into release-3.9
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx4
-rw-r--r--Tests/CMakeLists.txt1
-rw-r--r--Tests/CSharpLinkToCxx/CMakeLists.txt17
-rw-r--r--Tests/CSharpLinkToCxx/cli.cpp10
-rw-r--r--Tests/CSharpLinkToCxx/cli.hpp10
-rw-r--r--Tests/CSharpLinkToCxx/csharp.cs16
6 files changed, 54 insertions, 4 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 238c9e8..f8534df 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -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();
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index d138f58..d16df1c 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -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)
diff --git a/Tests/CSharpLinkToCxx/CMakeLists.txt b/Tests/CSharpLinkToCxx/CMakeLists.txt
new file mode 100644
index 0000000..c4269e0
--- /dev/null
+++ b/Tests/CSharpLinkToCxx/CMakeLists.txt
@@ -0,0 +1,17 @@
+# 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)
diff --git a/Tests/CSharpLinkToCxx/cli.cpp b/Tests/CSharpLinkToCxx/cli.cpp
new file mode 100644
index 0000000..97ac724
--- /dev/null
+++ b/Tests/CSharpLinkToCxx/cli.cpp
@@ -0,0 +1,10 @@
+#include "cli.hpp"
+
+using namespace System;
+
+namespace CLIApp {
+void MyCli::testMyCli()
+{
+ Console::WriteLine("#message from CLIApp");
+}
+}
diff --git a/Tests/CSharpLinkToCxx/cli.hpp b/Tests/CSharpLinkToCxx/cli.hpp
new file mode 100644
index 0000000..a8c116d
--- /dev/null
+++ b/Tests/CSharpLinkToCxx/cli.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+namespace CLIApp {
+public
+ref class MyCli
+{
+public:
+ void testMyCli();
+};
+}
diff --git a/Tests/CSharpLinkToCxx/csharp.cs b/Tests/CSharpLinkToCxx/csharp.cs
new file mode 100644
index 0000000..35c5cc3
--- /dev/null
+++ b/Tests/CSharpLinkToCxx/csharp.cs
@@ -0,0 +1,16 @@
+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();
+ }
+ }
+}