From b3af698358eb0e9333058dddb504c3e7c507a41f Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 07:50:33 -0600 Subject: [PATCH 01/11] Update OP2Utility submodule for related changes Related: - PR https://github.com/OutpostUniverse/OP2Utility/pull/456 - PR https://github.com/OutpostUniverse/OP2Utility/pull/457 --- OP2Utility | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OP2Utility b/OP2Utility index 50bcb2d..8584f06 160000 --- a/OP2Utility +++ b/OP2Utility @@ -1 +1 @@ -Subproject commit 50bcb2da61b9a05834ce55fc0794865aaed46ef2 +Subproject commit 8584f064fdc8bc91cbc6b0bac2a116443c3b3a1b From 1df680491cf74cc73551a68d64160140dd3081e6 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 07:53:17 -0600 Subject: [PATCH 02/11] Remove explicit default `Release` optimization settings The `IntrinsicFunctions` (`/Oi`) and `FunctionLevelLinking` (`/Gy`) settings are implied by the `Optimization` setting of `MaxSpeed` (`/O2`). The `/O2` flag implies: `/Og` `/Oi` `/Ot` `/Oy` `/Ob2` `/GF` `/Gy` --- MissionScanner/MissionScanner.vcxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index fe22f7c..1ea8aa4 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -141,8 +141,6 @@ Level3 MaxSpeed - true - true true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true @@ -161,8 +159,6 @@ Level3 MaxSpeed - true - true true NDEBUG;_CONSOLE;%(PreprocessorDefinitions) ../OP2Utility/OP2Utility/include; From b717375d6e5f5427f3f0429d091b62c22cda3359 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 07:55:53 -0600 Subject: [PATCH 03/11] Remove explicit default of `Optimization` settings For `Debug` builds (`UseDebugLibraries` set to `true`) the default for `Optimization` is `Disabled` (`/Od`). For `Release` builds (`UseDebugLibraries` not set to `true`) the default for `Optimization` is `MaxSpeed` (`/O2`). --- MissionScanner/MissionScanner.vcxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index 1ea8aa4..b07591e 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -108,7 +108,6 @@ Level3 - Disabled true WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true @@ -124,7 +123,6 @@ Level3 - Disabled true _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true @@ -140,7 +138,6 @@ Level3 - MaxSpeed true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true @@ -158,7 +155,6 @@ Level3 - MaxSpeed true NDEBUG;_CONSOLE;%(PreprocessorDefinitions) ../OP2Utility/OP2Utility/include; From c6b229419ebceaec3e1d6af890f6e3ec67f4a488 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 07:57:42 -0600 Subject: [PATCH 04/11] Remove explicit default of `RuntimeLibrary` setting For `Debug` builds (`UseDebugLibraries` set to `true`) the `RuntimeLibrary` setting defaults to `MultiThreadedDebugDll`. For `Release` builds (`UseDebugLibraries` not set to `true`) the `RuntimeLibrary` setting defaults to `MultiThreadedDll`. --- MissionScanner/MissionScanner.vcxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index b07591e..a15d9f3 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -113,7 +113,6 @@ true stdcpp20 ../OP2Utility/OP2Utility/include; - MultiThreadedDebugDLL Console @@ -128,7 +127,6 @@ true stdcpp20 ../OP2Utility/OP2Utility/include; - MultiThreadedDebugDLL Console @@ -143,7 +141,6 @@ true stdcpp20 ../OP2Utility/OP2Utility/include; - MultiThreadedDLL Console @@ -158,7 +155,6 @@ true NDEBUG;_CONSOLE;%(PreprocessorDefinitions) ../OP2Utility/OP2Utility/include; - MultiThreadedDLL stdcpp20 From 8f81ab6788ca84022573ce33ce6c15615b349e94 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 08:02:29 -0600 Subject: [PATCH 05/11] Remove explicit `ConformanceMode` setting Oddly this setting was only specified in 3 out of 4 configurations. ---- According to `msbuild` file the default value for `ConformanceMode` is `Default`, which will be enabled for this project since it targets `stdcpp20`. Documentation: https://learn.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=msvc-170 > The `/permissive-` option is implicitly set by the `/std:c++latest` option starting in Visual Studio 2019 version 16.8, and in version 16.11 by the `/std:c++20` option. New projects created with Visual Studio 2026 typically have `ConformanceMode` set to `true`, though not for all project types. In particular a new Google Test project doesn't set `ConformanceMode`. The documentation had a note about setting `ConformanceMode` for new projects: > By default, the /permissive- option is set in new projects created by Visual Studio 2017 version 15.5 and later versions. It's not set by default in earlier versions. Given the default, this doesn't appear to be needed for newer versions of Visual Studio targetting `c++20`. ---- Related: - PR https://github.com/lairworks/nas2d-core/pull/1479 - Commit https://github.com/lairworks/nas2d-core/commit/6ad937df629fdc5ce1b8c3d580bcb8609005cc18 --- MissionScanner/MissionScanner.vcxproj | 3 --- 1 file changed, 3 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index a15d9f3..3b90b54 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -110,7 +110,6 @@ Level3 true WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true stdcpp20 ../OP2Utility/OP2Utility/include; @@ -124,7 +123,6 @@ Level3 true _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true stdcpp20 ../OP2Utility/OP2Utility/include; @@ -138,7 +136,6 @@ Level3 true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true stdcpp20 ../OP2Utility/OP2Utility/include; From 9309b86d99a49e45607f8d2954f5f6660c370bc4 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 08:07:34 -0600 Subject: [PATCH 06/11] Place `LanguageStandard` setting first The last configuration had this setting placed differently than the other configurations. Placing it first seems like a logical position. In particular, it is common among all configuration settings, and should be grouped with other common settings. The last couple of settings vary a bit by configuration, so better to place it before those settings. --- MissionScanner/MissionScanner.vcxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index 3b90b54..6e668fd 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -107,10 +107,10 @@ + stdcpp20 Level3 true WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - stdcpp20 ../OP2Utility/OP2Utility/include; @@ -120,10 +120,10 @@ + stdcpp20 Level3 true _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - stdcpp20 ../OP2Utility/OP2Utility/include; @@ -133,10 +133,10 @@ + stdcpp20 Level3 true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - stdcpp20 ../OP2Utility/OP2Utility/include; @@ -148,11 +148,11 @@ + stdcpp20 Level3 true NDEBUG;_CONSOLE;%(PreprocessorDefinitions) ../OP2Utility/OP2Utility/include; - stdcpp20 Console From d0c8ad154a43451c9d3a523697a3494a8c06ce32 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 08:19:20 -0600 Subject: [PATCH 07/11] Remove `GenerateDebugInformation` from `Link` section According to the documentation the `/DEBUG` flag is equivalent to `/DEBUG:FULL`. According to MSBuild files, the default for `GenerateDebugInformation` is `DebugFull`. Hence there doesn't seem to be a reason to override the default value with an equivalent non-default value. Documentation: https://learn.microsoft.com/en-us/cpp/build/reference/debug-generate-debug-info?view=msvc-180 --- MissionScanner/MissionScanner.vcxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index 6e668fd..76132c6 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -115,7 +115,6 @@ Console - true @@ -128,7 +127,6 @@ Console - true @@ -143,7 +141,6 @@ Console true true - true @@ -158,7 +155,6 @@ Console true true - true From 76556cf3858c466ea3c4667ee32219cce25380e6 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 08:31:18 -0600 Subject: [PATCH 08/11] Swap `AdditionalIncludeDirectories` to before `PreprocessorDefinitions` The `AdditionalIncludeDirectories` setting is identical for all configurations, so it's probably better to group it with the other common settings. The common grouping means larger blocks of text can be searched or replaced. Meanwhile the `PreprocessorDefinitions` setting varies by configuration. --- MissionScanner/MissionScanner.vcxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index 76132c6..4ed97bf 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -110,8 +110,8 @@ stdcpp20 Level3 true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) ../OP2Utility/OP2Utility/include; + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) Console @@ -122,8 +122,8 @@ stdcpp20 Level3 true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) ../OP2Utility/OP2Utility/include; + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) Console @@ -134,8 +134,8 @@ stdcpp20 Level3 true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) ../OP2Utility/OP2Utility/include; + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) Console @@ -148,8 +148,8 @@ stdcpp20 Level3 true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) ../OP2Utility/OP2Utility/include; + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) Console From 9d25cad1c9f3bec5b6ba8428ace9e31febc3e3c8 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 08:35:25 -0600 Subject: [PATCH 09/11] Move `WholeProgramOptimization` setting last The `WholeProgramOptimization` setting is unique to `Release` configurations, so placing it last means other settings common to all configurations can be grouped together. This maximizes the size of text blocks that can be searched or replaced. --- MissionScanner/MissionScanner.vcxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index 4ed97bf..cda3560 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -61,15 +61,15 @@ Application false v143 - true Unicode + true Application false v143 - true Unicode + true From bf07d480a68775ce81fe521876a254f77d0e10da Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 08:36:56 -0600 Subject: [PATCH 10/11] Normalize position of `UseDebugLibraries` The `UseDebugLibraries` setting is currently common to all configurations, though the value differs by `Debug` or `Release` configurations. By moving it to the end of the common value block we maximize the size of common text that can be searched or replaced. --- MissionScanner/MissionScanner.vcxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index cda3560..e0b3548 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -47,28 +47,28 @@ Application - true v143 Unicode + true Application - true v143 Unicode + true Application - false v143 Unicode + false true Application - false v143 Unicode + false true From 7046487136007b982f2a2b3cd4663c067c19e16c Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Aug 2026 08:39:25 -0600 Subject: [PATCH 11/11] Remove explicit default of `UseDebugLibraries` in `Release` configs When not specified the `UseDebugLibraries` defaults to `false`. --- MissionScanner/MissionScanner.vcxproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/MissionScanner/MissionScanner.vcxproj b/MissionScanner/MissionScanner.vcxproj index e0b3548..8b62f69 100644 --- a/MissionScanner/MissionScanner.vcxproj +++ b/MissionScanner/MissionScanner.vcxproj @@ -61,14 +61,12 @@ Application v143 Unicode - false true Application v143 Unicode - false true