diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 775e568924..88e584fb5f 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -4576,35 +4576,32 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions(
}
if (this->MSTools) {
- if (this->GeneratorTarget->GetType() == cmStateEnums::EXECUTABLE) {
- // Specify an entry point for executables.
- if (this->GeneratorTarget->IsWin32Executable(config)) {
- if (this->GlobalGenerator->TargetsWindowsCE()) {
- linkOptions.AddFlag("SubSystem", "WindowsCE");
- if (this->GeneratorTarget->GetType() == cmStateEnums::EXECUTABLE) {
- if (this->ClOptions[config]->UsingUnicode()) {
- linkOptions.AddFlag("EntryPointSymbol", "wWinMainCRTStartup");
- } else {
- linkOptions.AddFlag("EntryPointSymbol", "WinMainCRTStartup");
- }
+ if (this->GeneratorTarget->IsWin32Executable(config)) {
+ if (this->GlobalGenerator->TargetsWindowsCE()) {
+ linkOptions.AddFlag("SubSystem", "WindowsCE");
+ if (this->GeneratorTarget->GetType() == cmStateEnums::EXECUTABLE) {
+ if (this->ClOptions[config]->UsingUnicode()) {
+ linkOptions.AddFlag("EntryPointSymbol", "wWinMainCRTStartup");
+ } else {
+ linkOptions.AddFlag("EntryPointSymbol", "WinMainCRTStartup");
}
- } else {
- linkOptions.AddFlag("SubSystem", "Windows");
}
} else {
- if (this->GlobalGenerator->TargetsWindowsCE()) {
- linkOptions.AddFlag("SubSystem", "WindowsCE");
- if (this->GeneratorTarget->GetType() == cmStateEnums::EXECUTABLE) {
- if (this->ClOptions[config]->UsingUnicode()) {
- linkOptions.AddFlag("EntryPointSymbol", "mainWCRTStartup");
- } else {
- linkOptions.AddFlag("EntryPointSymbol", "mainACRTStartup");
- }
- }
- } else {
- linkOptions.AddFlag("SubSystem", "Console");
- };
+ linkOptions.AddFlag("SubSystem", "Windows");
}
+ } else {
+ if (this->GlobalGenerator->TargetsWindowsCE()) {
+ linkOptions.AddFlag("SubSystem", "WindowsCE");
+ if (this->GeneratorTarget->GetType() == cmStateEnums::EXECUTABLE) {
+ if (this->ClOptions[config]->UsingUnicode()) {
+ linkOptions.AddFlag("EntryPointSymbol", "mainWCRTStartup");
+ } else {
+ linkOptions.AddFlag("EntryPointSymbol", "mainACRTStartup");
+ }
+ }
+ } else {
+ linkOptions.AddFlag("SubSystem", "Console");
+ };
}
if (cmValue stackVal = this->Makefile->GetDefinition(
diff --git a/Tests/RunCMake/VS10Project/VsDefaultFlags-check.cmake b/Tests/RunCMake/VS10Project/VsDefaultFlags-check.cmake
index afecdf3535..4cdad74019 100644
--- a/Tests/RunCMake/VS10Project/VsDefaultFlags-check.cmake
+++ b/Tests/RunCMake/VS10Project/VsDefaultFlags-check.cmake
@@ -38,12 +38,12 @@ macro(VsDefaultCompilerFlags_check tgt)
endif()
endmacro()
-macro(VsDefaultLinkerFlags_check tgt needs_subsystem_console)
+macro(VsDefaultLinkerFlags_check tgt)
set(HAVE_DataExecutionPrevention 0)
set(HAVE_ImageHasSafeExceptionHandlers 0)
set(HAVE_LinkErrorReporting 0)
set(HAVE_RandomizedBaseAddress 0)
- set(HAVE_SubSystem 0)
+ set(HAVE_SubSystem_Empty 0)
set(HAVE_SubSystem_Console 0)
file(STRINGS "${vcProjectFile}" lines)
@@ -61,7 +61,7 @@ macro(VsDefaultLinkerFlags_check tgt needs_subsystem_console)
set(HAVE_RandomizedBaseAddress 1)
endif()
if(line MATCHES "^ *")
- set(HAVE_SubSystem 1)
+ set(HAVE_SubSystem_Empty 1)
endif()
if(line MATCHES "^ *Console")
set(HAVE_SubSystem_Console 1)
@@ -88,33 +88,21 @@ macro(VsDefaultLinkerFlags_check tgt needs_subsystem_console)
return()
endif()
- if(${needs_subsystem_console})
- if(HAVE_SubSystem)
- set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj has a property.")
- return()
- endif()
+ if(HAVE_SubSystem_Empty)
+ set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj has a property.")
+ return()
+ endif()
- if(NOT HAVE_SubSystem_Console)
- set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not have a property with 'Console' value.")
- return()
- endif()
- else()
- if(NOT HAVE_SubSystem)
- set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not have a property.")
- return()
- endif()
-
- if(HAVE_SubSystem_Console)
- set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj has a property with 'Console' value.")
- return()
- endif()
+ if(NOT HAVE_SubSystem_Console)
+ set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not have a property with 'Console' value.")
+ return()
endif()
endmacro()
VsDefaultCompilerFlags_check(emptyStatic)
VsDefaultCompilerFlags_check(emptyShared)
-VsDefaultLinkerFlags_check(emptyShared OFF)
+VsDefaultLinkerFlags_check(emptyShared)
VsDefaultCompilerFlags_check(main)
-VsDefaultLinkerFlags_check(main ON)
+VsDefaultLinkerFlags_check(main)