diff options
author | Michael Stürmer <michael.stuermer@schaeffler.com> | 2017-08-29 08:46:54 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-09-05 13:41:40 (GMT) |
commit | 7e57e6ae123439d5101ae1fc3ce593652b408b0c (patch) | |
tree | a587f76c38814a49ceb1a4580b1ca2a4d4d1c598 /Tests/CSharpLinkToCxx | |
parent | 29907992277e0145a83368f3e8674b0608d745c5 (diff) | |
download | CMake-7e57e6ae123439d5101ae1fc3ce593652b408b0c.zip CMake-7e57e6ae123439d5101ae1fc3ce593652b408b0c.tar.gz CMake-7e57e6ae123439d5101ae1fc3ce593652b408b0c.tar.bz2 |
VS: Do not reference output assemblies if not possible for CSharp target
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
Diffstat (limited to 'Tests/CSharpLinkToCxx')
-rw-r--r-- | Tests/CSharpLinkToCxx/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Tests/CSharpLinkToCxx/cpp_native.cpp | 10 | ||||
-rw-r--r-- | Tests/CSharpLinkToCxx/cpp_native.hpp | 9 |
3 files changed, 25 insertions, 0 deletions
diff --git a/Tests/CSharpLinkToCxx/CMakeLists.txt b/Tests/CSharpLinkToCxx/CMakeLists.txt index c4269e0..153c57c 100644 --- a/Tests/CSharpLinkToCxx/CMakeLists.txt +++ b/Tests/CSharpLinkToCxx/CMakeLists.txt @@ -15,3 +15,9 @@ 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) diff --git a/Tests/CSharpLinkToCxx/cpp_native.cpp b/Tests/CSharpLinkToCxx/cpp_native.cpp new file mode 100644 index 0000000..dc7670f --- /dev/null +++ b/Tests/CSharpLinkToCxx/cpp_native.cpp @@ -0,0 +1,10 @@ +#include "cpp_native.hpp" + +#include <iostream> + +namespace CppApp { +void MyCpp::testMyCpp() +{ + std::cout << "#message from CppApp" << std::endl; +} +} diff --git a/Tests/CSharpLinkToCxx/cpp_native.hpp b/Tests/CSharpLinkToCxx/cpp_native.hpp new file mode 100644 index 0000000..0fa1a3b --- /dev/null +++ b/Tests/CSharpLinkToCxx/cpp_native.hpp @@ -0,0 +1,9 @@ +#pragma once + +namespace CppApp { +class MyCpp +{ +public: + void testMyCpp(); +}; +} |