diff options
author | Michael Stürmer <michael.stuermer@schaeffler.com> | 2017-06-20 14:14:45 (GMT) |
---|---|---|
committer | Michael Stürmer <michael.stuermer@schaeffler.com> | 2017-06-21 06:37:15 (GMT) |
commit | 51865fc67ecd61d9cbf984be0310f2e9fb8ff455 (patch) | |
tree | 8074f627dbc519557e2fe164a74d90fc5afcc464 /Tests/CSharpLinkToCxx | |
parent | b7799f07d1bcf2708976b41aa07047c04e5ee3d0 (diff) | |
download | CMake-51865fc67ecd61d9cbf984be0310f2e9fb8ff455.zip CMake-51865fc67ecd61d9cbf984be0310f2e9fb8ff455.tar.gz CMake-51865fc67ecd61d9cbf984be0310f2e9fb8ff455.tar.bz2 |
Vs: allow CSharp targets to be linked to CXX targets
Fixes: #16755
Diffstat (limited to 'Tests/CSharpLinkToCxx')
-rw-r--r-- | Tests/CSharpLinkToCxx/CMakeLists.txt | 17 | ||||
-rw-r--r-- | Tests/CSharpLinkToCxx/cli.cpp | 10 | ||||
-rw-r--r-- | Tests/CSharpLinkToCxx/cli.hpp | 10 | ||||
-rw-r--r-- | Tests/CSharpLinkToCxx/csharp.cs | 16 |
4 files changed, 53 insertions, 0 deletions
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(); + } + } +} |