CMake/Tests/CSharpLinkFromCxx/CMakeLists.txt
Robert Dailey 076a356cd1 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
2018-02-23 08:53:17 -06:00

20 lines
847 B
CMake

# 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)