diff options
author | Robert Dailey <rcdailey@gmail.com> | 2018-02-05 21:43:25 (GMT) |
---|---|---|
committer | Robert Dailey <rcdailey@gmail.com> | 2018-02-23 14:53:17 (GMT) |
commit | 076a356cd1972a149898fdba77d1dd83981447b4 (patch) | |
tree | b0ea4574fba9ccb786b699973f94e611f2f70fd3 /Tests/CSharpLinkFromCxx/CMakeLists.txt | |
parent | ebf0a0827992be5cc03e530f9dc06bd1d05c1aa6 (diff) | |
download | CMake-076a356cd1972a149898fdba77d1dd83981447b4.zip CMake-076a356cd1972a149898fdba77d1dd83981447b4.tar.gz CMake-076a356cd1972a149898fdba77d1dd83981447b4.tar.bz2 |
VS: Support C# project references
When specifying a pure C# target in the `target_link_libraries()` call to
another C++ target, a `<ProjectReference>` was setup for it (we wanted this)
but also a corresponding `.lib` was added under `<AdditionalDependencies>`
(we didn't want this).
This change introduces a check that prevents `.lib` linker options from
being used when the corresponding target for that library is a C# target.
Fixes: #17678
Diffstat (limited to 'Tests/CSharpLinkFromCxx/CMakeLists.txt')
-rw-r--r-- | Tests/CSharpLinkFromCxx/CMakeLists.txt | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Tests/CSharpLinkFromCxx/CMakeLists.txt b/Tests/CSharpLinkFromCxx/CMakeLists.txt new file mode 100644 index 0000000..9a1a993 --- /dev/null +++ b/Tests/CSharpLinkFromCxx/CMakeLists.txt @@ -0,0 +1,19 @@ +# 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) |