mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-19 02:17:27 +08:00
VS: Fix MANIFESTUAC link flag map to .vcxproj elements
Add special parsing of the flags given in `/MANIFESTUAC:"..."` in order to map them correctly to `.vcxproj` elements. Keep the old incorrect flag table entries for `uiAccess` and `level` flags for compatibility even though they do not really exist. Fixes: #16563
This commit is contained in:
@@ -29,6 +29,8 @@ static cmVS7FlagTable cmVS10LinkFlagTable[] = {
|
|||||||
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
||||||
"ItaniumImage", 0 },
|
"ItaniumImage", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
||||||
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
||||||
"HighestAvailable", 0 },
|
"HighestAvailable", 0 },
|
||||||
@@ -123,8 +125,12 @@ static cmVS7FlagTable cmVS10LinkFlagTable[] = {
|
|||||||
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
||||||
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
||||||
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
||||||
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
||||||
|
|
||||||
{ "GenerateDebugInformation", "DEBUG", "", "true",
|
{ "GenerateDebugInformation", "DEBUG", "", "true",
|
||||||
cmVS7FlagTable::CaseInsensitive },
|
cmVS7FlagTable::CaseInsensitive },
|
||||||
{ "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
|
{ "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
|
||||||
@@ -162,11 +168,8 @@ static cmVS7FlagTable cmVS10LinkFlagTable[] = {
|
|||||||
{ "LinkDLL", "DLL", "", "true", 0 },
|
{ "LinkDLL", "DLL", "", "true", 0 },
|
||||||
|
|
||||||
// Bool Properties With Argument
|
// Bool Properties With Argument
|
||||||
{ "EnableUAC", "MANIFESTUAC:NO", "", "false", 0 },
|
{ "EnableUAC", "MANIFESTUAC:", "", "",
|
||||||
{ "EnableUAC", "MANIFESTUAC:", "", "true",
|
cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
|
||||||
{ "UACUIAccess", "MANIFESTUAC:", "Enable User Account Control (UAC)", "",
|
|
||||||
cmVS7FlagTable::UserValueRequired },
|
|
||||||
{ "GenerateMapFile", "MAP", "", "true",
|
{ "GenerateMapFile", "MAP", "", "true",
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
||||||
{ "MapFileName", "MAP:", "Generate Map File", "",
|
{ "MapFileName", "MAP:", "Generate Map File", "",
|
||||||
|
@@ -29,6 +29,8 @@ static cmVS7FlagTable cmVS11LinkFlagTable[] = {
|
|||||||
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
||||||
"ItaniumImage", 0 },
|
"ItaniumImage", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
||||||
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
||||||
"HighestAvailable", 0 },
|
"HighestAvailable", 0 },
|
||||||
@@ -135,8 +137,12 @@ static cmVS7FlagTable cmVS11LinkFlagTable[] = {
|
|||||||
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
||||||
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
||||||
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
||||||
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
||||||
|
|
||||||
{ "ManifestEmbed", "manifest:embed", "", "true", 0 },
|
{ "ManifestEmbed", "manifest:embed", "", "true", 0 },
|
||||||
{ "GenerateDebugInformation", "DEBUG", "", "true",
|
{ "GenerateDebugInformation", "DEBUG", "", "true",
|
||||||
cmVS7FlagTable::CaseInsensitive },
|
cmVS7FlagTable::CaseInsensitive },
|
||||||
@@ -179,11 +185,8 @@ static cmVS7FlagTable cmVS11LinkFlagTable[] = {
|
|||||||
{ "LinkDLL", "DLL", "", "true", 0 },
|
{ "LinkDLL", "DLL", "", "true", 0 },
|
||||||
|
|
||||||
// Bool Properties With Argument
|
// Bool Properties With Argument
|
||||||
{ "EnableUAC", "MANIFESTUAC:NO", "", "false", 0 },
|
{ "EnableUAC", "MANIFESTUAC:", "", "",
|
||||||
{ "EnableUAC", "MANIFESTUAC:", "", "true",
|
cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
|
||||||
{ "UACUIAccess", "MANIFESTUAC:", "Enable User Account Control (UAC)", "",
|
|
||||||
cmVS7FlagTable::UserValueRequired },
|
|
||||||
{ "GenerateMapFile", "MAP", "", "true",
|
{ "GenerateMapFile", "MAP", "", "true",
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
||||||
{ "MapFileName", "MAP:", "Generate Map File", "",
|
{ "MapFileName", "MAP:", "Generate Map File", "",
|
||||||
|
@@ -29,6 +29,8 @@ static cmVS7FlagTable cmVS12LinkFlagTable[] = {
|
|||||||
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
||||||
"ItaniumImage", 0 },
|
"ItaniumImage", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
||||||
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
||||||
"HighestAvailable", 0 },
|
"HighestAvailable", 0 },
|
||||||
@@ -135,8 +137,12 @@ static cmVS7FlagTable cmVS12LinkFlagTable[] = {
|
|||||||
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
||||||
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
||||||
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
||||||
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
||||||
|
|
||||||
{ "ManifestEmbed", "manifest:embed", "", "true", 0 },
|
{ "ManifestEmbed", "manifest:embed", "", "true", 0 },
|
||||||
{ "GenerateDebugInformation", "DEBUG", "", "true",
|
{ "GenerateDebugInformation", "DEBUG", "", "true",
|
||||||
cmVS7FlagTable::CaseInsensitive },
|
cmVS7FlagTable::CaseInsensitive },
|
||||||
@@ -179,11 +185,8 @@ static cmVS7FlagTable cmVS12LinkFlagTable[] = {
|
|||||||
{ "LinkDLL", "DLL", "", "true", 0 },
|
{ "LinkDLL", "DLL", "", "true", 0 },
|
||||||
|
|
||||||
// Bool Properties With Argument
|
// Bool Properties With Argument
|
||||||
{ "EnableUAC", "MANIFESTUAC:NO", "", "false", 0 },
|
{ "EnableUAC", "MANIFESTUAC:", "", "",
|
||||||
{ "EnableUAC", "MANIFESTUAC:", "", "true",
|
cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
|
||||||
{ "UACUIAccess", "MANIFESTUAC:", "Enable User Account Control (UAC)", "",
|
|
||||||
cmVS7FlagTable::UserValueRequired },
|
|
||||||
{ "GenerateMapFile", "MAP", "", "true",
|
{ "GenerateMapFile", "MAP", "", "true",
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
||||||
{ "MapFileName", "MAP:", "Generate Map File", "",
|
{ "MapFileName", "MAP:", "Generate Map File", "",
|
||||||
|
@@ -29,6 +29,8 @@ static cmVS7FlagTable cmVS140LinkFlagTable[] = {
|
|||||||
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
||||||
"ItaniumImage", 0 },
|
"ItaniumImage", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
||||||
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
||||||
"HighestAvailable", 0 },
|
"HighestAvailable", 0 },
|
||||||
@@ -148,8 +150,12 @@ static cmVS7FlagTable cmVS140LinkFlagTable[] = {
|
|||||||
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
||||||
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
||||||
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
||||||
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
||||||
|
|
||||||
{ "ManifestEmbed", "manifest:embed", "", "true", 0 },
|
{ "ManifestEmbed", "manifest:embed", "", "true", 0 },
|
||||||
{ "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
|
{ "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
|
||||||
{ "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
|
{ "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
|
||||||
@@ -190,11 +196,8 @@ static cmVS7FlagTable cmVS140LinkFlagTable[] = {
|
|||||||
{ "LinkDLL", "DLL", "", "true", 0 },
|
{ "LinkDLL", "DLL", "", "true", 0 },
|
||||||
|
|
||||||
// Bool Properties With Argument
|
// Bool Properties With Argument
|
||||||
{ "EnableUAC", "MANIFESTUAC:NO", "", "false", 0 },
|
{ "EnableUAC", "MANIFESTUAC:", "", "",
|
||||||
{ "EnableUAC", "MANIFESTUAC:", "", "true",
|
cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
|
||||||
{ "UACUIAccess", "MANIFESTUAC:", "Enable User Account Control (UAC)", "",
|
|
||||||
cmVS7FlagTable::UserValueRequired },
|
|
||||||
{ "GenerateMapFile", "MAP", "", "true",
|
{ "GenerateMapFile", "MAP", "", "true",
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
||||||
{ "MapFileName", "MAP:", "Generate Map File", "",
|
{ "MapFileName", "MAP:", "Generate Map File", "",
|
||||||
|
@@ -29,6 +29,8 @@ static cmVS7FlagTable cmVS141LinkFlagTable[] = {
|
|||||||
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
{ "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
|
||||||
"ItaniumImage", 0 },
|
"ItaniumImage", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
{ "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
|
||||||
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
{ "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
|
||||||
"HighestAvailable", 0 },
|
"HighestAvailable", 0 },
|
||||||
@@ -149,8 +151,12 @@ static cmVS7FlagTable cmVS141LinkFlagTable[] = {
|
|||||||
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
{ "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
|
||||||
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
{ "GenerateManifest", "MANIFEST", "", "true", 0 },
|
||||||
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
{ "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
|
||||||
|
|
||||||
|
// correct flags for uac should be /MANIFESTUAC, but some projects already
|
||||||
|
// use this bug to access uac field, so keep these for compatibility
|
||||||
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
{ "UACUIAccess", "uiAccess='false'", "", "false", 0 },
|
||||||
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
{ "UACUIAccess", "uiAccess='true'", "", "true", 0 },
|
||||||
|
|
||||||
{ "ManifestEmbed", "manifest:embed", "", "true", 0 },
|
{ "ManifestEmbed", "manifest:embed", "", "true", 0 },
|
||||||
{ "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
|
{ "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
|
||||||
{ "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
|
{ "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
|
||||||
@@ -191,11 +197,8 @@ static cmVS7FlagTable cmVS141LinkFlagTable[] = {
|
|||||||
{ "LinkDLL", "DLL", "", "true", 0 },
|
{ "LinkDLL", "DLL", "", "true", 0 },
|
||||||
|
|
||||||
// Bool Properties With Argument
|
// Bool Properties With Argument
|
||||||
{ "EnableUAC", "MANIFESTUAC:NO", "", "false", 0 },
|
{ "EnableUAC", "MANIFESTUAC:", "", "",
|
||||||
{ "EnableUAC", "MANIFESTUAC:", "", "true",
|
cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
|
||||||
{ "UACUIAccess", "MANIFESTUAC:", "Enable User Account Control (UAC)", "",
|
|
||||||
cmVS7FlagTable::UserValueRequired },
|
|
||||||
{ "GenerateMapFile", "MAP", "", "true",
|
{ "GenerateMapFile", "MAP", "", "true",
|
||||||
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
|
||||||
{ "MapFileName", "MAP:", "Generate Map File", "",
|
{ "MapFileName", "MAP:", "Generate Map File", "",
|
||||||
|
@@ -3261,6 +3261,7 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions(
|
|||||||
}
|
}
|
||||||
|
|
||||||
linkOptions.Parse(flags.c_str());
|
linkOptions.Parse(flags.c_str());
|
||||||
|
linkOptions.FixManifestUACFlags();
|
||||||
|
|
||||||
if (this->MSTools) {
|
if (this->MSTools) {
|
||||||
cmGeneratorTarget::ModuleDefinitionInfo const* mdi =
|
cmGeneratorTarget::ModuleDefinitionInfo const* mdi =
|
||||||
|
@@ -256,6 +256,74 @@ void cmVisualStudioGeneratorOptions::FixCudaCodeGeneration()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cmVisualStudioGeneratorOptions::FixManifestUACFlags()
|
||||||
|
{
|
||||||
|
static const char* ENABLE_UAC = "EnableUAC";
|
||||||
|
if (!HasFlag(ENABLE_UAC)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string uacFlag = GetFlag(ENABLE_UAC);
|
||||||
|
std::vector<std::string> subOptions;
|
||||||
|
cmsys::SystemTools::Split(uacFlag, subOptions, ' ');
|
||||||
|
if (subOptions.empty()) {
|
||||||
|
AddFlag(ENABLE_UAC, "true");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (subOptions.size() == 1 && subOptions[0] == "NO") {
|
||||||
|
AddFlag(ENABLE_UAC, "false");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<std::string, std::string> uacMap;
|
||||||
|
uacMap["level"] = "UACExecutionLevel";
|
||||||
|
uacMap["uiAccess"] = "UACUIAccess";
|
||||||
|
|
||||||
|
std::map<std::string, std::string> uacExecuteLevelMap;
|
||||||
|
uacExecuteLevelMap["asInvoker"] = "AsInvoker";
|
||||||
|
uacExecuteLevelMap["highestAvailable"] = "HighestAvailable";
|
||||||
|
uacExecuteLevelMap["requireAdministrator"] = "RequireAdministrator";
|
||||||
|
|
||||||
|
for (auto const& subopt : subOptions) {
|
||||||
|
std::vector<std::string> keyValue;
|
||||||
|
cmsys::SystemTools::Split(subopt, keyValue, '=');
|
||||||
|
if (keyValue.size() != 2 || (uacMap.find(keyValue[0]) == uacMap.end())) {
|
||||||
|
// ignore none key=value option or unknown flags
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (keyValue[1].front() == '\'' && keyValue[1].back() == '\'') {
|
||||||
|
keyValue[1] =
|
||||||
|
keyValue[1].substr(1, std::max<int>(0, keyValue[1].size() - 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (keyValue[0] == "level") {
|
||||||
|
if (uacExecuteLevelMap.find(keyValue[1]) == uacExecuteLevelMap.end()) {
|
||||||
|
// unknown level value
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
AddFlag(uacMap[keyValue[0]].c_str(),
|
||||||
|
uacExecuteLevelMap[keyValue[1]].c_str());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (keyValue[0] == "uiAccess") {
|
||||||
|
if (keyValue[1] != "true" && keyValue[1] != "false") {
|
||||||
|
// unknown uiAccess value
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
AddFlag(uacMap[keyValue[0]].c_str(), keyValue[1].c_str());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// unknwon sub option
|
||||||
|
}
|
||||||
|
|
||||||
|
AddFlag(ENABLE_UAC, "true");
|
||||||
|
}
|
||||||
|
|
||||||
void cmVisualStudioGeneratorOptions::Parse(const char* flags)
|
void cmVisualStudioGeneratorOptions::Parse(const char* flags)
|
||||||
{
|
{
|
||||||
// Parse the input string as a windows command line since the string
|
// Parse the input string as a windows command line since the string
|
||||||
|
@@ -77,6 +77,8 @@ public:
|
|||||||
|
|
||||||
void FixCudaCodeGeneration();
|
void FixCudaCodeGeneration();
|
||||||
|
|
||||||
|
void FixManifestUACFlags();
|
||||||
|
|
||||||
bool IsDebug() const;
|
bool IsDebug() const;
|
||||||
bool IsWinRt() const;
|
bool IsWinRt() const;
|
||||||
bool IsManaged() const;
|
bool IsManaged() const;
|
||||||
|
Reference in New Issue
Block a user