diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 24 | ||||
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.h | 1 |
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); |