Add instructions for adding support for new MSVS version
Try to collect all the information in a single place to make things easier for the next update.
This commit is contained in:
58
docs/contributing/how-to-add-new-msvs-version.md
Normal file
58
docs/contributing/how-to-add-new-msvs-version.md
Normal file
@@ -0,0 +1,58 @@
|
||||
How to add support for a new MSVS version
|
||||
=========================================
|
||||
|
||||
MSVS versions
|
||||
-------------
|
||||
|
||||
This is confusing because there are several of them:
|
||||
|
||||
- Marketing IDE/product version, which is the year of the release, e.g. 2019.
|
||||
- Actual internal IDE version, visible in `Help|About` dialog, for example,
|
||||
e.g. 16.1.4.
|
||||
- Compiler version, visible in `cl /?` output, e.g. 19.21.27702.2. This version
|
||||
also corresponds to the value of the predefined `_MSC_VER` symbol.
|
||||
- Toolset version: this is similar to the compiler version, but uses different
|
||||
format, e.g. it's 14x for compiler version 19, with `x` being 0, 1 or 2
|
||||
depending on the minor compiler version (00, 14 or 21).
|
||||
|
||||
Moreover, historically, different IDE versions corresponded to different major
|
||||
compiler versions, however this hasn't been the case any more for the last few
|
||||
releases (2015, 2017, 2019 or 14, 15, 16 IDE versions) that all use the same
|
||||
major compiler version (19) as they are ABI-compatible. Also, historically,
|
||||
each compiler used its own toolset, but these last few versions can each use
|
||||
any of 140, 141, 142 toolset.
|
||||
|
||||
wxWidgets uses the IDE version for the project/solution files (but notice that
|
||||
project files are the same for all MSVS 201x versions) and the toolset version
|
||||
for the names of build directories.
|
||||
|
||||
|
||||
TODO list
|
||||
---------
|
||||
|
||||
Here is a list of things that need to be done when adding support for the next
|
||||
MSVS version:
|
||||
|
||||
- If the major compiler version changed, add a new `__VISUALCxx__` symbol to
|
||||
`include/wx/compiler.h` (`xx` here are the first 2 digits of the toolset
|
||||
version, i.e. basically correspond to the major compiler version, except
|
||||
that 13 was skipped for superstitious reasons, see the comment in that file).
|
||||
- Add `wxCOMPILER_PREFIX` definition for the new version to
|
||||
`include/msvc/wx/setup.h`.
|
||||
- Add the new solution file `build/msw/wx_vcNN.sln` (where `NN` is the internal
|
||||
IDE version), typically by opening an existing solution in the new IDE and
|
||||
letting it to update it.
|
||||
- Discard changes to the project files that were done by the IDE during the
|
||||
update and instead update `build/msw/wx_config.props` and add a new condition
|
||||
checking `VisualStudioVersion` value for choosing the value of
|
||||
`PlatformToolset`.
|
||||
- Update the lists of supported compiler versions in the different
|
||||
documentation files (search for "Microsoft Visual C++" to find the places
|
||||
that need updating):
|
||||
- `README.md`
|
||||
- `docs/doxygen/mainpages/introduction.h`
|
||||
- `docs/msw/install.md`
|
||||
- `docs/release.md`
|
||||
- Update `build/tools/msvs/officialbuild.bat` to support the new toolset version
|
||||
and also update `build/tools/msvs/buildall.bat` to call it with this new version
|
||||
(these files are used to build the official binaries for the releases).
|
Reference in New Issue
Block a user