summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx24
-rw-r--r--Source/cmVisualStudio10TargetGenerator.h1
2 files changed, 25 insertions, 0 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 7975018..33152f2 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -793,6 +793,7 @@ void cmVisualStudio10TargetGenerator::WriteClassicMsBuildProjectFile(
Elem(e0, "PropertyGroup").Attribute("Label", "UserMacros");
this->WriteWinRTPackageCertificateKeyFile(e0);
this->WritePathAndIncrementalLinkOptions(e0);
+ this->WritePublicProjectContentOptions(e0);
this->WriteCEDebugProjectConfigurationValues(e0);
this->WriteItemDefinitionGroups(e0);
this->WriteCustomCommands(e0);
@@ -3115,6 +3116,29 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions(
}
}
+void cmVisualStudio10TargetGenerator::WritePublicProjectContentOptions(
+ Elem& e0)
+{
+ cmStateEnums::TargetType ttype = this->GeneratorTarget->GetType();
+ if (ttype != cmStateEnums::SHARED_LIBRARY) {
+ return;
+ }
+ if (this->ProjectType != VsProjectType::vcxproj) {
+ return;
+ }
+
+ Elem e1(e0, "PropertyGroup");
+ for (std::string const& config : this->Configurations) {
+ if (this->GeneratorTarget->HaveCxx20ModuleSources() &&
+ this->GeneratorTarget->HaveCxxModuleSupport(config) ==
+ cmGeneratorTarget::Cxx20SupportLevel::Supported) {
+ const std::string cond = this->CalcCondition(config);
+ // For DLL projects, we export all BMIs for now
+ e1.WritePlatformConfigTag("AllProjectBMIsArePublic", cond, "true");
+ }
+ }
+}
+
void cmVisualStudio10TargetGenerator::OutputLinkIncremental(
Elem& e1, std::string const& configName)
{
diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h
index a87cb01..ffab91f 100644
--- a/Source/cmVisualStudio10TargetGenerator.h
+++ b/Source/cmVisualStudio10TargetGenerator.h
@@ -97,6 +97,7 @@ private:
void WriteWinRTPackageCertificateKeyFile(Elem& e0);
void WriteXamlFilesGroup(Elem& e0);
void WritePathAndIncrementalLinkOptions(Elem& e0);
+ void WritePublicProjectContentOptions(Elem& e0);
void WriteItemDefinitionGroups(Elem& e0);
void VerifyNecessaryFiles();
void WriteMissingFiles(Elem& e1);