summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake
diff options
context:
space:
mode:
authorKinan Mahdi <kinan.mahdi@gmail.com>2020-06-03 22:20:11 (GMT)
committerBrad King <brad.king@kitware.com>2020-06-05 12:01:59 (GMT)
commit3fd07d30bfdb35fa1f807d58da7bcf18cfb037b2 (patch)
tree57d854ec0c63b42075ea342fd95fcef7bd799114 /Tests/RunCMake
parent3414ee155e0423284a9171497d7724828fd324a5 (diff)
downloadCMake-3fd07d30bfdb35fa1f807d58da7bcf18cfb037b2.zip
CMake-3fd07d30bfdb35fa1f807d58da7bcf18cfb037b2.tar.gz
CMake-3fd07d30bfdb35fa1f807d58da7bcf18cfb037b2.tar.bz2
VS: Enable DOTNET_TARGET_FRAMEWORK properties all target types
This makes them compatible with `VS_PACKAGE_REFERENCES` and, in particular, fixes nuget package references in combination with install targets. Fixes: #20764
Diffstat (limited to 'Tests/RunCMake')
-rw-r--r--Tests/RunCMake/VS10Project/VsPackageReferences-check.cmake22
-rw-r--r--Tests/RunCMake/VS10Project/VsPackageReferences.cmake9
2 files changed, 31 insertions, 0 deletions
diff --git a/Tests/RunCMake/VS10Project/VsPackageReferences-check.cmake b/Tests/RunCMake/VS10Project/VsPackageReferences-check.cmake
index 512a1c9..9c0f6e6 100644
--- a/Tests/RunCMake/VS10Project/VsPackageReferences-check.cmake
+++ b/Tests/RunCMake/VS10Project/VsPackageReferences-check.cmake
@@ -4,6 +4,12 @@ if(NOT EXISTS "${vcProjectFile}")
return()
endif()
+set(installProjectFile "${RunCMake_TEST_BINARY_DIR}/INSTALL.vcxproj")
+if(NOT EXISTS "${installProjectFile}")
+ set(RunCMake_TEST_FAILED "Install file INSTALL.vcxproj does not exist.")
+ return()
+endif()
+
set(test1Library "boost")
set(test1Version "1.7.0")
@@ -37,3 +43,19 @@ if(NOT Library1Found OR NOT Library2Found)
set(RunCMake_TEST_FAILED "Failed to find package references")
return()
endif()
+
+set(DOT_NET_FRAMEWORK_VERSION_FOUND FALSE)
+
+file(STRINGS "${installProjectFile}" installlines)
+foreach(line IN LISTS lines)
+ if(line MATCHES "^ *<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>$")
+ set(DOT_NET_FRAMEWORK_VERSION_FOUND TRUE)
+ message(STATUS "The install target contains the correct TargetFrameworkVersion.")
+ break()
+ endif()
+endforeach()
+
+if(NOT DOT_NET_FRAMEWORK_VERSION_FOUND)
+ set(RunCMake_TEST_FAILED "Failed to find TargetFrameworkVersion in the install target")
+ return()
+endif()
diff --git a/Tests/RunCMake/VS10Project/VsPackageReferences.cmake b/Tests/RunCMake/VS10Project/VsPackageReferences.cmake
index 224ab18..30e8fd4 100644
--- a/Tests/RunCMake/VS10Project/VsPackageReferences.cmake
+++ b/Tests/RunCMake/VS10Project/VsPackageReferences.cmake
@@ -1,4 +1,13 @@
enable_language(CXX)
+set(CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION "v4.7.2")
+
add_library(foo foo.cpp)
set_property(TARGET foo PROPERTY VS_PACKAGE_REFERENCES "boost_1.7.0;SFML_2.2.0")
+
+# install and export the targets to test the correct behavior
+# nuget restore will only work with an install target when the correct
+# target framework version is set
+set(INSTALL_CMAKE_DIR CMake)
+install(TARGETS foo EXPORT foo_Export_Target)
+install(EXPORT foo_Export_Target DESTINATION ${INSTALL_CMAKE_DIR} FILE fooConfig.cmake)