VS: Add VS_DPI_AWARE target property

Enables setting the visual studio project property for Manifests,
controlling the DPI Aware setting.
This commit is contained in:
Matt Weir
2019-06-16 12:27:13 +12:00
committed by Brad King
parent 6f7b68e7f9
commit cd92f8f8bf
10 changed files with 120 additions and 8 deletions
+25 -8
View File
@@ -3252,15 +3252,32 @@ void cmVisualStudio10TargetGenerator::WriteManifestOptions(
std::vector<cmSourceFile const*> manifest_srcs;
this->GeneratorTarget->GetManifests(manifest_srcs, config);
if (!manifest_srcs.empty()) {
std::ostringstream oss;
for (cmSourceFile const* mi : manifest_srcs) {
std::string m = this->ConvertPath(mi->GetFullPath(), false);
ConvertToWindowsSlash(m);
oss << m << ";";
}
const char* dpiAware = this->GeneratorTarget->GetProperty("VS_DPI_AWARE");
if (!manifest_srcs.empty() || dpiAware) {
Elem e2(e1, "Manifest");
e2.Element("AdditionalManifestFiles", oss.str());
if (!manifest_srcs.empty()) {
std::ostringstream oss;
for (cmSourceFile const* mi : manifest_srcs) {
std::string m = this->ConvertPath(mi->GetFullPath(), false);
ConvertToWindowsSlash(m);
oss << m << ";";
}
e2.Element("AdditionalManifestFiles", oss.str());
}
if (dpiAware) {
if (!strcmp(dpiAware, "PerMonitor")) {
e2.Element("EnableDpiAwareness", "PerMonitorHighDPIAware");
} else if (cmSystemTools::IsOn(dpiAware)) {
e2.Element("EnableDpiAwareness", "true");
} else if (cmSystemTools::IsOff(dpiAware)) {
e2.Element("EnableDpiAwareness", "false");
} else {
cmSystemTools::Error("Bad parameter for VS_DPI_AWARE: " +
std::string(dpiAware));
}
}
}
}