Repository navigation
Conversation
Co-authored-by: Junie <junie@jetbrains.com>
This was referenced Oct 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 0 of the CMake migration plan: audit, decisions and parity tooling. No CMake targets yet.
Motivation
CMake must reproduce what MSBuild really does, including implicit defaults, and "no lost flags / no new warnings" must be measured rather than assumed. This PR records the baseline that every later CMake phase is compared against.
Changes
docs/CMAKE-MIGRATION.md: per-target sources, definitions, include directories, real link dependencies (hidden today byVcpkgAutoLink), generated MIDL files, custom build steps, runtime deployment, architecture-specific settings, hard-codedbin\<Config>\<Platform>paths, prerequisites, and decisions D1–D6.build/scripts/Compare-CompileCommands.ps1: reads compile and link lines from a detailed MSBuild log (builds the.slnxitself when no log is given) and, optionally, from a CMakecompile_commands.jsonplus a verbose build log. It normalises paths and option order, diffs per translation unit and per binary, counts unique warnings and summarisesdumpbin /dependents /exports /headers. MSBuild is found through-MSBuild,MWG_MSBUILD,PATH, thenvswhere..gitignore:out/,cmake-build-*/,CMakeUserPresets.json. The CMake vcpkg treevcpkg_installed/cmake-<Platform>is already covered byvcpkg_installed/.docs/BUILDING.md: short pointer to the migration doc and the parity script.Key decisions
<binaryDir>/binand<binaryDir>/lib, never to<repo>/bin. Preset dirs are short (out/b/x64d, ...). Scripts get an optional-BinDirectorylater.vcpkg_installed/cmake-<Platform>), with triplets pinned in the presets.MapWinGIS.ActiveX.Interfacetarget owns MIDL.ProjectReference(MwgCMakeBuild).Audit findings that correct the plan: no project defines
WIN32,_WINDOWSor_USRDLL, so the CMake defaults get dropped. MSBuild adds_WINDLLto DLLs and/JMCin Debug. Every binary embeds a manifest (/TLBID:1). MIDL also gets/W1 /char signed /target "NT60". The MSBuild tests depend ongmock.dllonly because of auto-linking.Baseline (MSBuild, VS 18.11, MSVC 14.51, SDK 10.0.28000.0)
DllInstallThe Win32 baseline is collected in the phase that first builds Win32 with CMake.
Dependencies
Based on
development. First PR of the CMake stack.