mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-28 01:49:23 -05:00
7e57e6ae12
Since commit v3.9.0-rc4~4^2 (Vs: allow CSharp targets to be linked to CXX targets, 2017-06-20) CSharp targets get `ProjectReference` entries to their dependencies. This causes VS to also reference the dependency's output assembly by default, which is incorrect for non-managed targets. Fix this by setting `ReferenceOutputAssembly` to `false` for targets that can't provide output assemblies. Unmanaged C++ targets (shared libs & executables) can still be referenced and a warning will be shown in the IDE but the build will not break anymore. Fixes: #17172
24 lines
796 B
CMake
24 lines
796 B
CMake
# 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)
|
|
|
|
# this unmanaged C++ library will be added to the C#/.NET
|
|
# references of CSharpLinkToCxx but it will show a warning
|
|
# because it is unmanaged
|
|
add_library(CppNativeApp SHARED cpp_native.hpp cpp_native.cpp)
|
|
target_link_libraries(CSharpLinkToCxx CppNativeApp)
|