This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, master has been updated
       via  187928875d215df8757b291ad629a36df75da42b (commit)
       via  42e14d90b1b38df6c698ef230ab06ae9504436d5 (commit)
      from  66bba23a4b4c6e7901524677f245d02a31b3eff8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=187928875d215df8757b291ad629a36df75da42b
commit 187928875d215df8757b291ad629a36df75da42b
Merge: 66bba23 42e14d9
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Fri May 31 17:18:21 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Fri May 31 13:18:31 2019 -0400

    Merge topic 'vs-add-package-reference'
    
    42e14d90b1 VS: Added support for VS package references for nuget
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Acked-by: Leonid Pospelov <pospelo...@yandex.ru>
    Merge-request: !3389


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=42e14d90b1b38df6c698ef230ab06ae9504436d5
commit 42e14d90b1b38df6c698ef230ab06ae9504436d5
Author:     Kinan Mahdi <kinan.ma...@gmail.com>
AuthorDate: Tue May 28 16:21:14 2019 +0200
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Thu May 30 10:22:44 2019 -0400

    VS: Added support for VS package references for nuget

diff --git a/Help/manual/cmake-properties.7.rst 
b/Help/manual/cmake-properties.7.rst
index 9d2ad90..25aab8d 100644
--- a/Help/manual/cmake-properties.7.rst
+++ b/Help/manual/cmake-properties.7.rst
@@ -342,6 +342,7 @@ Properties on Targets
    /prop_tgt/VS_KEYWORD
    /prop_tgt/VS_MOBILE_EXTENSIONS_VERSION
    /prop_tgt/VS_NO_SOLUTION_DEPLOY
+   /prop_tgt/VS_PACKAGE_REFERENCES
    /prop_tgt/VS_PROJECT_IMPORT
    /prop_tgt/VS_SCC_AUXPATH
    /prop_tgt/VS_SCC_LOCALPATH
diff --git a/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst 
b/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst
new file mode 100644
index 0000000..5a0465b
--- /dev/null
+++ b/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst
@@ -0,0 +1,13 @@
+VS_PACKAGE_REFERENCES
+---------------------
+
+Visual Studio package references for nuget.
+
+Adds one or more semicolon-delimited package references to a generated
+Visual Studio project. The version of the package will be
+underscore delimited. For example, ``boost_1.7.0;nunit_3.12.*``.
+
+.. code-block:: cmake
+
+  set_property(TARGET ${TARGET_NAME} PROPERTY
+    VS_PACKAGE_REFERENCES "boost_1.7.0")
diff --git a/Help/release/dev/vs-add-package-references.rst 
b/Help/release/dev/vs-add-package-references.rst
new file mode 100644
index 0000000..2d260dc
--- /dev/null
+++ b/Help/release/dev/vs-add-package-references.rst
@@ -0,0 +1,6 @@
+vs-add-package-references
+-------------------------
+
+* A :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to
+  tell :ref:`Visual Studio Generators` to add references to nuget
+  packages.
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx 
b/Source/cmVisualStudio10TargetGenerator.cxx
index d328a8c..09821e9 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -664,6 +664,7 @@ void cmVisualStudio10TargetGenerator::Generate()
     this->WriteCustomCommands(e0);
     this->WriteAllSources(e0);
     this->WriteDotNetReferences(e0);
+    this->WritePackageReferences(e0);
     this->WriteImports(e0);
     this->WriteEmbeddedResourceGroup(e0);
     this->WriteXamlFilesGroup(e0);
@@ -737,6 +738,33 @@ void cmVisualStudio10TargetGenerator::Generate()
   this->WriteGroups();
 }
 
+void cmVisualStudio10TargetGenerator::WritePackageReferences(Elem& e0)
+{
+  std::vector<std::string> packageReferences;
+  if (const char* vsPackageReferences =
+        this->GeneratorTarget->GetProperty("VS_PACKAGE_REFERENCES")) {
+    cmSystemTools::ExpandListArgument(vsPackageReferences, packageReferences);
+  }
+  if (!packageReferences.empty()) {
+    Elem e1(e0, "ItemGroup");
+    for (std::string const& ri : packageReferences) {
+      size_t versionIndex = ri.find_last_of('_');
+      if (versionIndex != std::string::npos) {
+        WritePackageReference(e1, ri.substr(0, versionIndex),
+                              ri.substr(versionIndex + 1));
+      }
+    }
+  }
+}
+
+void cmVisualStudio10TargetGenerator::WritePackageReference(
+  Elem& e1, std::string const& ref, std::string const& version)
+{
+  Elem e2(e1, "PackageReference");
+  e2.Attribute("Include", ref);
+  e2.Attribute("Version", version);
+}
+
 void cmVisualStudio10TargetGenerator::WriteDotNetReferences(Elem& e0)
 {
   std::vector<std::string> references;
diff --git a/Source/cmVisualStudio10TargetGenerator.h 
b/Source/cmVisualStudio10TargetGenerator.h
index 1dea8e9..cb6832b 100644
--- a/Source/cmVisualStudio10TargetGenerator.h
+++ b/Source/cmVisualStudio10TargetGenerator.h
@@ -72,6 +72,9 @@ private:
   void WriteExcludeFromBuild(Elem& e2,
                              std::vector<size_t> const& exclude_configs);
   void WriteAllSources(Elem& e0);
+  void WritePackageReferences(Elem& e0);
+  void WritePackageReference(Elem& e1, std::string const& ref,
+                             std::string const& version);
   void WriteDotNetReferences(Elem& e0);
   void WriteDotNetReference(Elem& e1, std::string const& ref,
                             std::string const& hint,
diff --git a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake 
b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
index 9a0b7a9..55ca9ea 100644
--- a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
+++ b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
@@ -21,6 +21,7 @@ run_cmake(VSCSharpDefines)
 run_cmake(VsSdkDirectories)
 run_cmake(VsGlobals)
 run_cmake(VsProjectImport)
+run_cmake(VsPackageReferences)
 
 if(CMAKE_C_COMPILER_ID STREQUAL "MSVC" AND CMAKE_C_COMPILER_VERSION 
VERSION_GREATER_EQUAL 19.05)
   run_cmake(VsJustMyCode)
diff --git a/Tests/RunCMake/VS10Project/VsPackageReferences-check.cmake 
b/Tests/RunCMake/VS10Project/VsPackageReferences-check.cmake
new file mode 100644
index 0000000..4ff5327
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsPackageReferences-check.cmake
@@ -0,0 +1,39 @@
+set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
+if(NOT EXISTS "${vcProjectFile}")
+  set(RunCMake_TEST_FAILED "Project file foo.vcxproj does not exist.")
+  return()
+endif()
+
+
+set(test1Library "boost")
+set(test1Version "1.7.0")
+
+
+set(test2Library "SFML")
+set(test2Version "2.2.0")
+
+set(Library1Found FALSE)
+set(Library2Found FALSE)
+
+file(STRINGS "${vcProjectFile}" lines)
+
+foreach(i 1 2)
+  set(testLibrary "${test${i}Library}")
+  set(testVersion "${test${i}Version}")
+  foreach(line IN LISTS lines)
+    if(line MATCHES "^ *<PackageReference Include=\"${testLibrary}\".*>$")
+      if(line MATCHES "^ *<PackageReference .* Version=\"${testVersion}\".*>$")
+        set(Library${i}Found TRUE)
+        message(STATUS "foo.vcxproj is using package reference ${testLibrary} 
with version ${testVersion}")
+      elseif()
+        message(STATUS "foo.vcxproj failed to define reference ${testLibrary} 
with version ${testVersion}")
+        set(Library${i}Found FALSE)
+      endif()
+    endif()
+  endforeach()
+endforeach()
+
+if(NOT Library1Found OR NOT Library2Found)
+  set(RunCMake_TEST_FAILED "Failed to find package references")
+  return()
+endif()
diff --git a/Tests/RunCMake/VS10Project/VsPackageReferences.cmake 
b/Tests/RunCMake/VS10Project/VsPackageReferences.cmake
new file mode 100644
index 0000000..224ab18
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsPackageReferences.cmake
@@ -0,0 +1,4 @@
+enable_language(CXX)
+add_library(foo foo.cpp)
+
+set_property(TARGET foo PROPERTY VS_PACKAGE_REFERENCES 
"boost_1.7.0;SFML_2.2.0")

-----------------------------------------------------------------------

Summary of changes:
 Help/manual/cmake-properties.7.rst                 |  1 +
 Help/prop_tgt/VS_PACKAGE_REFERENCES.rst            | 13 ++++++++
 Help/release/dev/vs-add-package-references.rst     |  6 ++++
 Source/cmVisualStudio10TargetGenerator.cxx         | 28 ++++++++++++++++
 Source/cmVisualStudio10TargetGenerator.h           |  3 ++
 Tests/RunCMake/VS10Project/RunCMakeTest.cmake      |  1 +
 .../VS10Project/VsPackageReferences-check.cmake    | 39 ++++++++++++++++++++++
 .../RunCMake/VS10Project/VsPackageReferences.cmake |  4 +++
 8 files changed, 95 insertions(+)
 create mode 100644 Help/prop_tgt/VS_PACKAGE_REFERENCES.rst
 create mode 100644 Help/release/dev/vs-add-package-references.rst
 create mode 100644 Tests/RunCMake/VS10Project/VsPackageReferences-check.cmake
 create mode 100644 Tests/RunCMake/VS10Project/VsPackageReferences.cmake


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
https://cmake.org/mailman/listinfo/cmake-commits

Reply via email to