diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 23e88183db..93842721e8 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -3632,18 +3632,27 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions( if (!clOptions.HasFlag("BasicRuntimeChecks")) { clOptions.AddFlag("BasicRuntimeChecks", "Default"); } + if (!clOptions.HasFlag("ForceConformanceInForLoopScope")) { + clOptions.AddFlag("ForceConformanceInForLoopScope", ""); + } if (!clOptions.HasFlag("MinimalRebuild")) { clOptions.AddFlag("MinimalRebuild", ""); } if (!clOptions.HasFlag("Optimization")) { clOptions.AddFlag("Optimization", ""); } + if (!clOptions.HasFlag("RemoveUnreferencedCodeData")) { + clOptions.AddFlag("RemoveUnreferencedCodeData", ""); + } if (!clOptions.HasFlag("RuntimeLibrary")) { clOptions.AddFlag("RuntimeLibrary", ""); } if (!clOptions.HasFlag("SupportJustMyCode")) { clOptions.AddFlag("SupportJustMyCode", ""); } + if (!clOptions.HasFlag("TreatWChar_tAsBuiltInType")) { + clOptions.AddFlag("TreatWChar_tAsBuiltInType", ""); + } } this->ClOptions[configName] = std::move(pOptions); diff --git a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake index 232e637e13..72b1c78b29 100644 --- a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake +++ b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake @@ -34,6 +34,7 @@ run_cmake(VsCSharpReferenceProps) run_cmake(VsCSharpWithoutSources) run_cmake(VsCSharpDeployFiles) run_cmake(VSCSharpDefines) +run_cmake(VsDefaultFlags) run_cmake(VsSdkDirectories) run_cmake(VsGlobals) run_cmake(VsProjectImport) diff --git a/Tests/RunCMake/VS10Project/VsDefaultFlags-check.cmake b/Tests/RunCMake/VS10Project/VsDefaultFlags-check.cmake new file mode 100644 index 0000000000..724d63ccd5 --- /dev/null +++ b/Tests/RunCMake/VS10Project/VsDefaultFlags-check.cmake @@ -0,0 +1,41 @@ +macro(VsDefaultFlags_check tgt) + set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/${tgt}.vcxproj") + if(NOT EXISTS "${vcProjectFile}") + set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not exist.") + return() + endif() + + set(HAVE_ForceConformanceInForLoopScope 0) + set(HAVE_RemoveUnreferencedCodeData 0) + set(HAVE_TreatWChar_tAsBuiltInType 0) + + file(STRINGS "${vcProjectFile}" lines) + foreach(line IN LISTS lines) + if(line MATCHES "^ *") + set(HAVE_ForceConformanceInForLoopScope 1) + endif() + if(line MATCHES "^ *") + set(HAVE_RemoveUnreferencedCodeData 1) + endif() + if(line MATCHES "^ *") + set(HAVE_TreatWChar_tAsBuiltInType 1) + endif() + endforeach() + + if(NOT HAVE_ForceConformanceInForLoopScope) + set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not have a property.") + return() + endif() + + if(NOT HAVE_RemoveUnreferencedCodeData) + set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not have a property.") + return() + endif() + + if(NOT HAVE_TreatWChar_tAsBuiltInType) + set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not have a property.") + return() + endif() +endmacro() + +VsDefaultFlags_check(empty) diff --git a/Tests/RunCMake/VS10Project/VsDefaultFlags.cmake b/Tests/RunCMake/VS10Project/VsDefaultFlags.cmake new file mode 100644 index 0000000000..a0094385db --- /dev/null +++ b/Tests/RunCMake/VS10Project/VsDefaultFlags.cmake @@ -0,0 +1,2 @@ +enable_language(C) +add_library(empty empty.c)