[Cmake-commits] CMake branch, master, updated. v3.13.3-954-gbd3685b

Kitware Robot kwrobot at kitware.com
Thu Jan 17 11:13:07 EST 2019


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  bd3685b6cfac90bb553df0330e1732c066fe7dca (commit)
       via  9e3e93fc6f642e2cf0c1f11753ff8e2267d49ded (commit)
       via  22b43b0009f37c41b310dd26a4ecb00361975aaa (commit)
       via  a541d113e606b05073810bb1b5dd5a7a8fd2eec8 (commit)
      from  c144db1b8ca1ea2e3dad397123f110956a439030 (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=bd3685b6cfac90bb553df0330e1732c066fe7dca
commit bd3685b6cfac90bb553df0330e1732c066fe7dca
Merge: 9e3e93f 22b43b0
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Jan 17 16:07:05 2019 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Thu Jan 17 11:07:11 2019 -0500

    Merge topic 'vs-debug-utility-targets'
    
    22b43b0009 VS: Add support for VS_DEBUGGER_* properties on custom targets
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !2794


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9e3e93fc6f642e2cf0c1f11753ff8e2267d49ded
commit 9e3e93fc6f642e2cf0c1f11753ff8e2267d49ded
Merge: c144db1 a541d11
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Jan 17 16:05:57 2019 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Thu Jan 17 11:06:04 2019 -0500

    Merge topic 'fix_csharp_defines'
    
    a541d113e6 VS: Honor target_compile_definitions for C# projects
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !2809


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=22b43b0009f37c41b310dd26a4ecb00361975aaa
commit 22b43b0009f37c41b310dd26a4ecb00361975aaa
Author:     Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Fri Jan 11 21:29:58 2019 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Jan 16 10:21:01 2019 -0500

    VS: Add support for VS_DEBUGGER_* properties on custom targets
    
    Visual studio itself supports the corresponding `LocalDebugger*`
    properties on utility targets; support generating them from CMake as
    well.

diff --git a/Help/release/dev/vs-debug-utility-targets.rst b/Help/release/dev/vs-debug-utility-targets.rst
new file mode 100644
index 0000000..02e5262
--- /dev/null
+++ b/Help/release/dev/vs-debug-utility-targets.rst
@@ -0,0 +1,6 @@
+vs-debug-utility-targets
+------------------------
+
+* :ref:`Visual Studio Generators` for VS 2010 and above learned
+  to support the ``VS_DEBUGGER_*`` properties on targets created
+  via :command:`add_custom_target`.
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index dd90269..c685918 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -2283,6 +2283,58 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions(
   e1.Element("_ProjectFileVersion", "10.0.20506.1");
   for (std::string const& config : this->Configurations) {
     const std::string cond = this->CalcCondition(config);
+
+    if (ttype <= cmStateEnums::UTILITY) {
+      if (const char* workingDir = this->GeneratorTarget->GetProperty(
+            "VS_DEBUGGER_WORKING_DIRECTORY")) {
+        cmGeneratorExpression ge;
+        std::unique_ptr<cmCompiledGeneratorExpression> cge =
+          ge.Parse(workingDir);
+        std::string genWorkingDir =
+          cge->Evaluate(this->LocalGenerator, config);
+
+        e1.WritePlatformConfigTag("LocalDebuggerWorkingDirectory", cond,
+                                  genWorkingDir);
+      }
+
+      if (const char* environment =
+            this->GeneratorTarget->GetProperty("VS_DEBUGGER_ENVIRONMENT")) {
+        cmGeneratorExpression ge;
+        std::unique_ptr<cmCompiledGeneratorExpression> cge =
+          ge.Parse(environment);
+        std::string genEnvironment =
+          cge->Evaluate(this->LocalGenerator, config);
+
+        e1.WritePlatformConfigTag("LocalDebuggerEnvironment", cond,
+                                  genEnvironment);
+      }
+
+      if (const char* debuggerCommand =
+            this->GeneratorTarget->GetProperty("VS_DEBUGGER_COMMAND")) {
+
+        cmGeneratorExpression ge;
+        std::unique_ptr<cmCompiledGeneratorExpression> cge =
+          ge.Parse(debuggerCommand);
+        std::string genDebuggerCommand =
+          cge->Evaluate(this->LocalGenerator, config);
+
+        e1.WritePlatformConfigTag("LocalDebuggerCommand", cond,
+                                  genDebuggerCommand);
+      }
+
+      if (const char* commandArguments = this->GeneratorTarget->GetProperty(
+            "VS_DEBUGGER_COMMAND_ARGUMENTS")) {
+        cmGeneratorExpression ge;
+        std::unique_ptr<cmCompiledGeneratorExpression> cge =
+          ge.Parse(commandArguments);
+        std::string genCommandArguments =
+          cge->Evaluate(this->LocalGenerator, config);
+
+        e1.WritePlatformConfigTag("LocalDebuggerCommandArguments", cond,
+                                  genCommandArguments);
+      }
+    }
+
     if (ttype >= cmStateEnums::UTILITY) {
       e1.WritePlatformConfigTag(
         "IntDir", cond, "$(Platform)\\$(Configuration)\\$(ProjectName)\\");
@@ -2347,55 +2399,6 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions(
         e1.WritePlatformConfigTag("ExcludePath", cond, sdkExcludeDirectories);
       }
 
-      if (const char* workingDir = this->GeneratorTarget->GetProperty(
-            "VS_DEBUGGER_WORKING_DIRECTORY")) {
-        cmGeneratorExpression ge;
-        std::unique_ptr<cmCompiledGeneratorExpression> cge =
-          ge.Parse(workingDir);
-        std::string genWorkingDir =
-          cge->Evaluate(this->LocalGenerator, config);
-
-        e1.WritePlatformConfigTag("LocalDebuggerWorkingDirectory", cond,
-                                  genWorkingDir);
-      }
-
-      if (const char* environment =
-            this->GeneratorTarget->GetProperty("VS_DEBUGGER_ENVIRONMENT")) {
-        cmGeneratorExpression ge;
-        std::unique_ptr<cmCompiledGeneratorExpression> cge =
-          ge.Parse(environment);
-        std::string genEnvironment =
-          cge->Evaluate(this->LocalGenerator, config);
-
-        e1.WritePlatformConfigTag("LocalDebuggerEnvironment", cond,
-                                  genEnvironment);
-      }
-
-      if (const char* debuggerCommand =
-            this->GeneratorTarget->GetProperty("VS_DEBUGGER_COMMAND")) {
-
-        cmGeneratorExpression ge;
-        std::unique_ptr<cmCompiledGeneratorExpression> cge =
-          ge.Parse(debuggerCommand);
-        std::string genDebuggerCommand =
-          cge->Evaluate(this->LocalGenerator, config);
-
-        e1.WritePlatformConfigTag("LocalDebuggerCommand", cond,
-                                  genDebuggerCommand);
-      }
-
-      if (const char* commandArguments = this->GeneratorTarget->GetProperty(
-            "VS_DEBUGGER_COMMAND_ARGUMENTS")) {
-        cmGeneratorExpression ge;
-        std::unique_ptr<cmCompiledGeneratorExpression> cge =
-          ge.Parse(commandArguments);
-        std::string genCommandArguments =
-          cge->Evaluate(this->LocalGenerator, config);
-
-        e1.WritePlatformConfigTag("LocalDebuggerCommandArguments", cond,
-                                  genCommandArguments);
-      }
-
       std::string name =
         cmSystemTools::GetFilenameWithoutLastExtension(targetNameFull);
       e1.WritePlatformConfigTag("TargetName", cond, name);
diff --git a/Tests/RunCMake/VS10Project/VsDebuggerCommand-check.cmake b/Tests/RunCMake/VS10Project/VsDebuggerCommand-check.cmake
index 440f9f2..00288d4 100644
--- a/Tests/RunCMake/VS10Project/VsDebuggerCommand-check.cmake
+++ b/Tests/RunCMake/VS10Project/VsDebuggerCommand-check.cmake
@@ -1,22 +1,24 @@
-set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
-if(NOT EXISTS "${vcProjectFile}")
-  set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
-  return()
-endif()
+foreach(target foo bar)
+  set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/${target}.vcxproj")
+  if(NOT EXISTS "${vcProjectFile}")
+    set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
+    return()
+  endif()
 
-set(debuggerCommandSet FALSE)
+  set(debuggerCommandSet FALSE)
 
-file(STRINGS "${vcProjectFile}" lines)
-foreach(line IN LISTS lines)
-  if(line MATCHES "^ *<LocalDebuggerCommand[^>]*>([^<>]+)</LocalDebuggerCommand>$")
-    if("${CMAKE_MATCH_1}" STREQUAL "my-debugger-command foo")
-        message(STATUS "foo.vcxproj has debugger command set")
-        set(debuggerCommandSet TRUE)
+  file(STRINGS "${vcProjectFile}" lines)
+  foreach(line IN LISTS lines)
+    if(line MATCHES "^ *<LocalDebuggerCommand[^>]*>([^<>]+)</LocalDebuggerCommand>$")
+      if("${CMAKE_MATCH_1}" STREQUAL "my-debugger-command foo")
+          message(STATUS "${target}.vcxproj has debugger command set")
+          set(debuggerCommandSet TRUE)
+      endif()
     endif()
+  endforeach()
+
+  if(NOT debuggerCommandSet)
+    set(RunCMake_TEST_FAILED "LocalDebuggerCommand not found or not set correctly.")
+    return()
   endif()
 endforeach()
-
-if(NOT debuggerCommandSet)
-  set(RunCMake_TEST_FAILED "LocalDebuggerCommand not found or not set correctly.")
-  return()
-endif()
diff --git a/Tests/RunCMake/VS10Project/VsDebuggerCommand.cmake b/Tests/RunCMake/VS10Project/VsDebuggerCommand.cmake
index 5dcb6d1..54f9154 100644
--- a/Tests/RunCMake/VS10Project/VsDebuggerCommand.cmake
+++ b/Tests/RunCMake/VS10Project/VsDebuggerCommand.cmake
@@ -1,5 +1,6 @@
 enable_language(CXX)
 add_library(foo foo.cpp)
+add_custom_target(bar)
 
-set_target_properties(foo PROPERTIES
+set_target_properties(foo bar PROPERTIES
     VS_DEBUGGER_COMMAND "my-debugger-command $<TARGET_PROPERTY:foo,NAME>")
diff --git a/Tests/RunCMake/VS10Project/VsDebuggerCommandArguments-check.cmake b/Tests/RunCMake/VS10Project/VsDebuggerCommandArguments-check.cmake
index b2e0a43..87555d1 100644
--- a/Tests/RunCMake/VS10Project/VsDebuggerCommandArguments-check.cmake
+++ b/Tests/RunCMake/VS10Project/VsDebuggerCommandArguments-check.cmake
@@ -1,22 +1,24 @@
-set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
-if(NOT EXISTS "${vcProjectFile}")
-  set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
-  return()
-endif()
+foreach(target foo bar)
+  set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/${target}.vcxproj")
+  if(NOT EXISTS "${vcProjectFile}")
+    set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
+    return()
+  endif()
 
-set(debuggerCommandArgumentsSet FALSE)
+  set(debuggerCommandArgumentsSet FALSE)
 
-file(STRINGS "${vcProjectFile}" lines)
-foreach(line IN LISTS lines)
-  if(line MATCHES "^ *<LocalDebuggerCommandArguments[^>]*>([^<>]+)</LocalDebuggerCommandArguments>$")
-    if("${CMAKE_MATCH_1}" STREQUAL "my-debugger-command-arguments foo")
-        message(STATUS "foo.vcxproj has debugger command arguments set")
-        set(debuggerCommandArgumentsSet TRUE)
+  file(STRINGS "${vcProjectFile}" lines)
+  foreach(line IN LISTS lines)
+    if(line MATCHES "^ *<LocalDebuggerCommandArguments[^>]*>([^<>]+)</LocalDebuggerCommandArguments>$")
+      if("${CMAKE_MATCH_1}" STREQUAL "my-debugger-command-arguments foo")
+          message(STATUS "${target}.vcxproj has debugger command arguments set")
+          set(debuggerCommandArgumentsSet TRUE)
+      endif()
     endif()
+  endforeach()
+
+  if(NOT debuggerCommandArgumentsSet)
+    set(RunCMake_TEST_FAILED "LocalDebuggerCommandArguments not found or not set correctly.")
+    return()
   endif()
 endforeach()
-
-if(NOT debuggerCommandArgumentsSet)
-  set(RunCMake_TEST_FAILED "LocalDebuggerCommandArguments not found or not set correctly.")
-  return()
-endif()
diff --git a/Tests/RunCMake/VS10Project/VsDebuggerCommandArguments.cmake b/Tests/RunCMake/VS10Project/VsDebuggerCommandArguments.cmake
index aa87cdc..1f7d0be 100644
--- a/Tests/RunCMake/VS10Project/VsDebuggerCommandArguments.cmake
+++ b/Tests/RunCMake/VS10Project/VsDebuggerCommandArguments.cmake
@@ -1,5 +1,6 @@
 enable_language(CXX)
 add_library(foo foo.cpp)
+add_custom_target(bar)
 
-set_target_properties(foo PROPERTIES
+set_target_properties(foo bar PROPERTIES
     VS_DEBUGGER_COMMAND_ARGUMENTS "my-debugger-command-arguments $<TARGET_PROPERTY:foo,NAME>")
diff --git a/Tests/RunCMake/VS10Project/VsDebuggerEnvironment-check.cmake b/Tests/RunCMake/VS10Project/VsDebuggerEnvironment-check.cmake
index 2427ad4..fee121a 100644
--- a/Tests/RunCMake/VS10Project/VsDebuggerEnvironment-check.cmake
+++ b/Tests/RunCMake/VS10Project/VsDebuggerEnvironment-check.cmake
@@ -1,22 +1,24 @@
-set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
-if(NOT EXISTS "${vcProjectFile}")
-  set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
-  return()
-endif()
+foreach(target foo bar)
+  set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/${target}.vcxproj")
+  if(NOT EXISTS "${vcProjectFile}")
+    set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
+    return()
+  endif()
 
-set(debuggerEnvironmentSet FALSE)
+  set(debuggerEnvironmentSet FALSE)
 
-file(STRINGS "${vcProjectFile}" lines)
-foreach(line IN LISTS lines)
-  if(line MATCHES "^ *<LocalDebuggerEnvironment[^>]*>([^<>]+)</LocalDebuggerEnvironment>$")
-    if("${CMAKE_MATCH_1}" STREQUAL "my-debugger-environment foo")
-        message(STATUS "foo.vcxproj has debugger environment set")
-        set(debuggerEnvironmentSet TRUE)
+  file(STRINGS "${vcProjectFile}" lines)
+  foreach(line IN LISTS lines)
+    if(line MATCHES "^ *<LocalDebuggerEnvironment[^>]*>([^<>]+)</LocalDebuggerEnvironment>$")
+      if("${CMAKE_MATCH_1}" STREQUAL "my-debugger-environment foo")
+          message(STATUS "${target}.vcxproj has debugger environment set")
+          set(debuggerEnvironmentSet TRUE)
+      endif()
     endif()
+  endforeach()
+
+  if(NOT debuggerEnvironmentSet)
+    set(RunCMake_TEST_FAILED "LocalDebuggerEnvironment not found or not set correctly.")
+    return()
   endif()
 endforeach()
-
-if(NOT debuggerEnvironmentSet)
-  set(RunCMake_TEST_FAILED "LocalDebuggerEnvironment not found or not set correctly.")
-  return()
-endif()
diff --git a/Tests/RunCMake/VS10Project/VsDebuggerEnvironment.cmake b/Tests/RunCMake/VS10Project/VsDebuggerEnvironment.cmake
index d5bec4c..c594f35 100644
--- a/Tests/RunCMake/VS10Project/VsDebuggerEnvironment.cmake
+++ b/Tests/RunCMake/VS10Project/VsDebuggerEnvironment.cmake
@@ -1,5 +1,6 @@
 enable_language(CXX)
 add_library(foo foo.cpp)
+add_custom_target(bar)
 
-set_target_properties(foo PROPERTIES
+set_target_properties(foo bar PROPERTIES
     VS_DEBUGGER_ENVIRONMENT "my-debugger-environment $<TARGET_PROPERTY:foo,NAME>")
diff --git a/Tests/RunCMake/VS10Project/VsDebuggerWorkingDir-check.cmake b/Tests/RunCMake/VS10Project/VsDebuggerWorkingDir-check.cmake
index 6a142f8..9d3f2a8 100644
--- a/Tests/RunCMake/VS10Project/VsDebuggerWorkingDir-check.cmake
+++ b/Tests/RunCMake/VS10Project/VsDebuggerWorkingDir-check.cmake
@@ -1,22 +1,24 @@
-set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
-if(NOT EXISTS "${vcProjectFile}")
-  set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
-  return()
-endif()
+foreach(target foo bar)
+  set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/${target}.vcxproj")
+  if(NOT EXISTS "${vcProjectFile}")
+    set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
+    return()
+  endif()
 
-set(debuggerWorkDirSet FALSE)
+  set(debuggerWorkDirSet FALSE)
 
-file(STRINGS "${vcProjectFile}" lines)
-foreach(line IN LISTS lines)
-  if(line MATCHES "^ *<LocalDebuggerWorkingDirectory[^>]*>([^<>]+)</LocalDebuggerWorkingDirectory>$")
-    if("${CMAKE_MATCH_1}" STREQUAL "my-debugger-directory foo")
-        message(STATUS "foo.vcxproj has debugger working dir set")
-        set(debuggerWorkDirSet TRUE)
+  file(STRINGS "${vcProjectFile}" lines)
+  foreach(line IN LISTS lines)
+    if(line MATCHES "^ *<LocalDebuggerWorkingDirectory[^>]*>([^<>]+)</LocalDebuggerWorkingDirectory>$")
+      if("${CMAKE_MATCH_1}" STREQUAL "my-debugger-directory foo")
+          message(STATUS "${target}.vcxproj has debugger working dir set")
+          set(debuggerWorkDirSet TRUE)
+      endif()
     endif()
+  endforeach()
+
+  if(NOT debuggerWorkDirSet)
+    set(RunCMake_TEST_FAILED "LocalDebuggerWorkingDirectory not found or not set correctly.")
+    return()
   endif()
 endforeach()
-
-if(NOT debuggerWorkDirSet)
-  set(RunCMake_TEST_FAILED "LocalDebuggerWorkingDirectory not found or not set correctly.")
-  return()
-endif()
diff --git a/Tests/RunCMake/VS10Project/VsDebuggerWorkingDir.cmake b/Tests/RunCMake/VS10Project/VsDebuggerWorkingDir.cmake
index 36daed0..69ed85c 100644
--- a/Tests/RunCMake/VS10Project/VsDebuggerWorkingDir.cmake
+++ b/Tests/RunCMake/VS10Project/VsDebuggerWorkingDir.cmake
@@ -1,5 +1,6 @@
 enable_language(CXX)
 add_library(foo foo.cpp)
+add_custom_target(bar)
 
-set_target_properties(foo PROPERTIES
+set_target_properties(foo bar PROPERTIES
     VS_DEBUGGER_WORKING_DIRECTORY "my-debugger-directory $<TARGET_PROPERTY:foo,NAME>")

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a541d113e606b05073810bb1b5dd5a7a8fd2eec8
commit a541d113e606b05073810bb1b5dd5a7a8fd2eec8
Author:     Wil Stark <wil_stark at keysight.com>
AuthorDate: Mon Jan 14 13:52:25 2019 -0800
Commit:     Wil Stark <wil_stark at keysight.com>
CommitDate: Tue Jan 15 21:29:59 2019 -0800

    VS: Honor target_compile_definitions for C# projects
    
    Fixes: #18698

diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 655d6f0..35d48f6 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -2620,6 +2620,10 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions(
   }
   clOptions.AddDefines(targetDefines);
 
+  if (this->ProjectType == csproj) {
+    clOptions.AppendFlag("DefineConstants", targetDefines);
+  }
+
   // Get includes for this target
   if (!this->LangForClCompile.empty()) {
     clOptions.AddIncludes(
diff --git a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
index c796840..7c1ed4e 100644
--- a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
+++ b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
@@ -14,5 +14,6 @@ run_cmake(VsCSharpCustomTags)
 run_cmake(VsCSharpReferenceProps)
 run_cmake(VsCSharpWithoutSources)
 run_cmake(VsCSharpDeployFiles)
+run_cmake(VSCSharpDefines)
 run_cmake(VsSdkDirectories)
 run_cmake(VsGlobals)
diff --git a/Tests/RunCMake/VS10Project/VsCSharpDefines-check.cmake b/Tests/RunCMake/VS10Project/VsCSharpDefines-check.cmake
new file mode 100644
index 0000000..152bf9c
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsCSharpDefines-check.cmake
@@ -0,0 +1,64 @@
+#
+# Check C# VS project for required elements.
+#
+set(csProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.csproj")
+if(NOT EXISTS "${csProjectFile}")
+  set(RunCMake_TEST_FAILED "Project file ${csProjectFile} does not exist.")
+  return()
+endif()
+
+
+set(inDebug FALSE)
+set(inRelease FALSE)
+set(debugOK FALSE)
+set(releaseOK FALSE)
+
+
+file(STRINGS "${csProjectFile}" lines)
+foreach(line IN LISTS lines)
+  #message(STATUS ${line})
+  if(line MATCHES "^ *<PropertyGroup .*Debug\\|(Win32|x64).*")
+    set(inDebug TRUE)
+  elseif(line MATCHES "^ *<PropertyGroup .*Release\\|(Win32|x64).*")
+    set(inRelease TRUE)
+  elseif(line MATCHES "^ *</PropertyGroup> *$")
+    set(inRelease FALSE)
+    set(inDebug  FALSE)
+  elseif(inDebug AND
+     (line MATCHES "^ *<DefineConstants>.*MY_FOO_DEFINE.*</DefineConstants> *$") AND
+     (line MATCHES "^ *<DefineConstants>.*DEFINE_ONLY_FOR_DEBUG.*</DefineConstants> *$") AND
+     (line MATCHES "^ *<DefineConstants>.*MY_BAR_ASSIGNMENT=bar.*</DefineConstants> *$") AND
+     (NOT (line MATCHES "^ *<DefineConstants>.*DEFINE_ONLY_FOR_RELEASE.*</DefineConstants> *$"))
+    )
+    set(debugOK TRUE)
+  elseif(inRelease AND
+     (line MATCHES "^ *<DefineConstants>.*MY_FOO_DEFINE.*</DefineConstants> *$") AND
+     (line MATCHES "^ *<DefineConstants>.*DEFINE_ONLY_FOR_RELEASE.*</DefineConstants> *$") AND
+     (line MATCHES "^ *<DefineConstants>.*MY_BAR_ASSIGNMENT=bar.*</DefineConstants> *$") AND
+     (NOT (line MATCHES "^ *<DefineConstants>.*DEFINE_ONLY_FOR_DEBUG.*</DefineConstants> *$"))
+    )
+    set(releaseOK TRUE)
+  endif()
+endforeach()
+
+function(print_csprojfile)
+  file(STRINGS "${csProjectFile}" lines)
+  foreach(line IN LISTS lines)
+    message(STATUS ${line})
+  endforeach()
+endfunction()
+
+
+if(NOT debugOK)
+  message(STATUS "Failed to set Debug configuration defines correctly.")
+  set(RunCMake_TEST_FAILED "Failed to set Debug configuration defines correctly.")
+  print_csprojfile()
+  return()
+endif()
+
+if(NOT releaseOK)
+  message(STATUS "Failed to set Release configuration defines correctly.")
+  set(RunCMake_TEST_FAILED "Failed to set Release configuration defines correctly.")
+  print_csprojfile()
+  return()
+endif()
diff --git a/Tests/RunCMake/VS10Project/VsCSharpDefines.cmake b/Tests/RunCMake/VS10Project/VsCSharpDefines.cmake
new file mode 100644
index 0000000..62c19c5
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsCSharpDefines.cmake
@@ -0,0 +1,18 @@
+enable_language(CSharp)
+
+add_library(foo SHARED
+  foo.cs)
+
+set_target_properties(foo PROPERTIES
+  LINKER_LANGUAGE CSharp)
+
+
+# Issue 18698
+target_compile_definitions(
+  foo
+    PUBLIC
+      MY_FOO_DEFINE
+      "MY_BAR_ASSIGNMENT=bar"
+      $<$<CONFIG:Debug>:DEFINE_ONLY_FOR_DEBUG>
+      $<$<CONFIG:Release>:DEFINE_ONLY_FOR_RELEASE>
+)

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

Summary of changes:
 Help/release/dev/vs-debug-utility-targets.rst      |   6 ++
 Source/cmVisualStudio10TargetGenerator.cxx         | 105 +++++++++++----------
 Tests/RunCMake/VS10Project/RunCMakeTest.cmake      |   1 +
 .../VS10Project/VsCSharpDefines-check.cmake        |  64 +++++++++++++
 Tests/RunCMake/VS10Project/VsCSharpDefines.cmake   |  18 ++++
 .../VS10Project/VsDebuggerCommand-check.cmake      |  36 +++----
 Tests/RunCMake/VS10Project/VsDebuggerCommand.cmake |   3 +-
 .../VsDebuggerCommandArguments-check.cmake         |  36 +++----
 .../VS10Project/VsDebuggerCommandArguments.cmake   |   3 +-
 .../VS10Project/VsDebuggerEnvironment-check.cmake  |  36 +++----
 .../VS10Project/VsDebuggerEnvironment.cmake        |   3 +-
 .../VS10Project/VsDebuggerWorkingDir-check.cmake   |  36 +++----
 .../VS10Project/VsDebuggerWorkingDir.cmake         |   3 +-
 13 files changed, 229 insertions(+), 121 deletions(-)
 create mode 100644 Help/release/dev/vs-debug-utility-targets.rst
 create mode 100644 Tests/RunCMake/VS10Project/VsCSharpDefines-check.cmake
 create mode 100644 Tests/RunCMake/VS10Project/VsCSharpDefines.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list