diff options
author | Thomas Vaughan <thomas.vaughan@cnrc-nrc.gc.ca> | 2021-05-03 12:53:09 (GMT) |
---|---|---|
committer | Thomas Vaughan <thomas.vaughan@cnrc-nrc.gc.ca> | 2021-05-03 14:49:47 (GMT) |
commit | d8786bfa16889f445a37bee7e665948e7a134c13 (patch) | |
tree | 9bd7269fba05f24a7d15048fc3935caf28e7aee9 /Source | |
parent | 95afd879176256b17db44682d0664b87827c599b (diff) | |
download | CMake-d8786bfa16889f445a37bee7e665948e7a134c13.zip CMake-d8786bfa16889f445a37bee7e665948e7a134c13.tar.gz CMake-d8786bfa16889f445a37bee7e665948e7a134c13.tar.bz2 |
VS: Add support for per-config C# sources
Fixes: #22108
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 0255d60..42c3a68 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2277,6 +2277,20 @@ void cmVisualStudio10TargetGenerator::WriteAllSources(Elem& e0) std::back_inserter(exclude_configs)); Elem e2(e1, tool); + bool isCSharp = (si.Source->GetLanguage() == "CSharp"); + if (isCSharp && exclude_configs.size() > 0) { + std::stringstream conditions; + bool firstConditionSet{ false }; + for (const auto& ci : include_configs) { + if (firstConditionSet) { + conditions << " Or "; + } + conditions << "('$(Configuration)|$(Platform)'=='" + + this->Configurations[ci] + "|" + this->Platform + "')"; + firstConditionSet = true; + } + e2.Attribute("Condition", conditions.str()); + } this->WriteSource(e2, si.Source); bool useNativeUnityBuild = false; @@ -2321,7 +2335,7 @@ void cmVisualStudio10TargetGenerator::WriteAllSources(Elem& e0) if (si.Source->GetPropertyAsBool("SKIP_PRECOMPILE_HEADERS")) { e2.Element("PrecompiledHeader", "NotUsing"); } - if (!exclude_configs.empty()) { + if (!isCSharp && !exclude_configs.empty()) { this->WriteExcludeFromBuild(e2, exclude_configs); } } |