[gtkmm/gtkmm-3-24] NMake Makefiles: Distinguish between MSVC 2015, 2017 and 2019



commit 41cd5063a6074326d4613115287107d4788829dd
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Wed Jun 17 12:24:38 2020 +0800

    NMake Makefiles: Distinguish between MSVC 2015, 2017 and 2019
    
    It was found that we cannot completely rely on the fact that Visual
    Studio 2015~2019 tried very hard to be binary compatible, as there
    are corner cases when linking against glibmm built with Visual
    Studio 2015 with builds done by Visual Studio 2017 and 2019 where
    the code will fail to link and the DLLs are therefore not
    ABI-compatible.  Note that the libsigc++ DLLs, however, are ABI
    compatible between these 3 Visual Studio versions.
    
    As a result, for the DLL and LIB names, use 'vc140' for Visual Studio
    2015 builds, 'vc141' for Visual Studio 2017 builds and 'vc142' for
    Visual Studio 2019 builds, according to the toolset versions as defined
    by Microsoft.
    
    For people that may have previously built gtkmm (and glibmm) with Visual
    Studio 2017 or 2019, which had 'vc140' in the built .lib and DLL, an NMake
    option 'USE_COMPAT_LIBS' is added to make building such binaries with
    'vc140' easier, if needed.

 MSVC_NMake/build-rules-msvc.mak  | 180 +++++++++++++++++++--------------------
 MSVC_NMake/config-msvc.mak       |  40 ++++-----
 MSVC_NMake/create-lists-msvc.mak |  28 +++---
 MSVC_NMake/detectenv-msvc.mak    |  43 ++++++----
 MSVC_NMake/generate-msvc.mak     |  20 ++---
 MSVC_NMake/install.mak           |  24 +++---
 6 files changed, 173 insertions(+), 162 deletions(-)
---
diff --git a/MSVC_NMake/build-rules-msvc.mak b/MSVC_NMake/build-rules-msvc.mak
index 8f03a7d2..a36ccf7f 100644
--- a/MSVC_NMake/build-rules-msvc.mak
+++ b/MSVC_NMake/build-rules-msvc.mak
@@ -13,63 +13,63 @@
 #      $(CC)|$(CXX) $(cflags) /Fo$(destdir) /c @<<
 # $<
 # <<
-{vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\}.obj::
-       $(CXX) $(LIBGDKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\ /c @<<
+{vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\}.obj::
+       $(CXX) $(LIBGDKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\ /c @<<
 $<
 <<
 
-{..\gdk\gdkmm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\}.obj::
-       $(CXX) $(LIBGDKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\ /c @<<
+{..\gdk\gdkmm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\}.obj::
+       $(CXX) $(LIBGDKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\ /c @<<
 $<
 <<
 
-{..\untracked\gdk\gdkmm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\}.obj::
-       $(CXX) $(LIBGDKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\ /c @<<
+{..\untracked\gdk\gdkmm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\}.obj::
+       $(CXX) $(LIBGDKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\ /c @<<
 $<
 <<
 
-{..\gdk\src\}.ccg{vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\}.obj:
+{..\gdk\src\}.ccg{vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\}.obj:
        @if not exist $(@D)\private\ md $(@D)\private
        @for %%s in ($(<D)\*.ccg) do @if not exist ..\untracked\gdk\gdkmm\%%~ns.cc if not exist 
..\gdk\gdkmm\%%~ns.cc if not exist $(@D)\%%~ns.cc $(PERL) -- $(GMMPROC_DIR)/gmmproc -I ../tools/m4 -I 
$(GMMPROC_PANGO_DIR) -I $(GMMPROC_ATK_DIR) --defs $(<D:\=/) %%~ns $(<D:\=/) $(@D)
        @if exist $(@D)\$(<B).cc $(CXX) $(LIBGDKMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c 
$(@D)\$(<B).cc
        @if exist ..\untracked\gdk\gdkmm\$(<B).cc if not exist ..\gdk\gdkmm\$(<B).cc if not exist 
$(@D)\$(<B).cc $(CXX) $(LIBGDKMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c ..\gdk\gdkmm\$(<B).cc
        @if exist ..\gdk\gdkmm\$(<B).cc if not exist ..\untracked\gdk\gdkmm\$(<B).cc if not exist 
$(@D)\$(<B).cc $(CXX) $(LIBGDKMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c ..\gdk\gdkmm\$(<B).cc
 
-{.\gdkmm\}.rc{vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\}.res:
+{.\gdkmm\}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\}.res:
        rc /fo$@ $<
 
-{vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\}.obj::
-       $(CXX) $(LIBGTKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\ /c @<<
+{vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\}.obj::
+       $(CXX) $(LIBGTKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\ /c @<<
 $<
 <<
 
-{..\gtk\gtkmm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\}.obj::
-       $(CXX) $(LIBGTKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\ /c @<<
+{..\gtk\gtkmm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\}.obj::
+       $(CXX) $(LIBGTKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\ /c @<<
 $<
 <<
 
-{..\untracked\gtk\gtkmm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\}.obj::
-       $(CXX) $(LIBGTKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\ /c @<<
+{..\untracked\gtk\gtkmm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\}.obj::
+       $(CXX) $(LIBGTKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\ /c @<<
 $<
 <<
 
-{..\gtk\src\}.ccg{vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\}.obj:
+{..\gtk\src\}.ccg{vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\}.obj:
        @if not exist $(@D)\private\ md $(@D)\private
        @for %%s in ($(<D)\*.ccg) do @if not exist ..\gtk\gtkmm\%%~ns.cc if not exist 
..\untracked\gtk\gtkmm\%%~ns.cc if not exist $(@D)\%%~ns.cc $(PERL) -- $(GMMPROC_DIR)/gmmproc -I ../tools/m4 
-I $(GMMPROC_PANGO_DIR) -I $(GMMPROC_ATK_DIR) --defs $(<D:\=/) %%~ns $(<D:\=/) $(@D)
        @if exist $(@D)\$(<B).cc $(CXX) $(LIBGTKMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c 
$(@D)\$(<B).cc
        @if exist ..\untracked\gtk\gtkmm\$(<B).cc if not exist ..\gtk\gtkmm\$(<B).cc if not exist 
$(@D)\$(<B).cc $(CXX) $(LIBGTKMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c ..\gtk\gtkmm\$(<B).cc
        @if exist ..\gtk\gtkmm\$(<B).cc if not exist ..\untracked\gtk\gtkmm\$(<B).cc if not exist 
$(@D)\$(<B).cc $(CXX) $(LIBGTKMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c ..\gtk\gtkmm\$(<B).cc
 
-{.\gtkmm\}.rc{vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\}.res:
+{.\gtkmm\}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\}.res:
        rc /fo$@ $<
 
-{..\demos\gtk-demo\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\}.obj::
-       $(CXX) $(GTKMM_DEMO_CFLAGS) $(CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\ /c @<<
+{..\demos\gtk-demo\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\}.obj::
+       $(CXX) $(GTKMM_DEMO_CFLAGS) $(CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\ /c @<<
 $<
 <<
 
-{vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\}.obj::
-       $(CC) $(GTKMM_DEMO_CFLAGS) $(CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\ /c @<<
+{vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\}.c{vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\}.obj::
+       $(CC) $(GTKMM_DEMO_CFLAGS) $(CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\ /c @<<
 $<
 <<
 
@@ -105,88 +105,88 @@ $(gtkmm_OBJS)
 #      @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
 
 # For the gendef tool
-{.\gendef\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\}.exe:
-       @if not exist vs$(PDBVER)\$(CFG)\$(PLAT)\gendef\ md vs$(PDBVER)\$(CFG)\$(PLAT)\$(@B)
+{.\gendef\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\}.exe:
+       @if not exist vs$(VSVER)\$(CFG)\$(PLAT)\gendef\ md vs$(VSVER)\$(CFG)\$(PLAT)\$(@B)
        $(CXX) $(GTKMM_BASE_CFLAGS) $(CFLAGS) /Fo$(@D)\gendef\ /Fd$(@D)\gendef\ $< /link $(LDFLAGS) /out:$@
        @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
 
-$(GTKMM3_DEMO): $(GTKMM_LIB) vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo $(gtkmm_demo_OBJS)
+$(GTKMM3_DEMO): $(GTKMM_LIB) vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo $(gtkmm_demo_OBJS)
        link $(LDFLAGS) $(GTKMM_LIB) $(GDKMM_LIB) $(GTKMM_DEMO_DEP_LIBS) -out:$@ @<<
 $(gtkmm_demo_OBJS)
 <<
        @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
 
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-builder.exe: $(GTKMM_LIB) ..\tests\builder\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget.exe: $(GTKMM_LIB) ..\tests\child_widget\main.cc 
..\tests\child_widget\testwindow.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget2.exe: $(GTKMM_LIB) ..\tests\child_widget2\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget_managed.exe: $(GTKMM_LIB) 
..\tests\child_widget_managed\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-delete_cpp_child.exe: $(GTKMM_LIB) ..\tests\delete_cpp_child\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-dialog.exe: $(GTKMM_LIB) ..\tests\dialog\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-dialog_deletethis.exe: $(GTKMM_LIB) ..\tests\dialog_deletethis\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-gdk_rgba.exe: $(GTKMM_LIB) ..\tests\gdk_rgba\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-main_with_options.exe: $(GTKMM_LIB) ..\tests\main_with_options\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-menu_destruction.exe: $(GTKMM_LIB) ..\tests\menu_destruction\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-object_move.exe: $(GTKMM_LIB) ..\tests\object_move\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-property_notification.exe: $(GTKMM_LIB) 
..\tests\property_notification\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-refcount_dialog.exe: $(GTKMM_LIB) ..\tests\refcount_dialog\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-scrolledwindow.exe: $(GTKMM_LIB) ..\tests\scrolledwindow\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-tree_model_iterator.exe: $(GTKMM_LIB) 
..\tests\tree_model_iterator\main.cc
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-wrap_existing.exe: $(GTKMM_LIB) ..\tests\wrap_existing\main.cc
-
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-builder.exe     \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget.exe        \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget2.exe       \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget_managed.exe        \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-delete_cpp_child.exe    \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-dialog.exe      \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-dialog_deletethis.exe   \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-gdk_rgba.exe    \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-main_with_options.exe   \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-menu_destruction.exe    \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-object_move.exe \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-property_notification.exe       \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-refcount_dialog.exe     \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-scrolledwindow.exe      \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-tree_model_iterator.exe \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-wrap_existing.exe:
-       @if not exist vs$(PDBVER)\$(CFG)\$(PLAT)\$(@B) md vs$(PDBVER)\$(CFG)\$(PLAT)\$(@B)
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-builder.exe: $(GTKMM_LIB) ..\tests\builder\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget.exe: $(GTKMM_LIB) ..\tests\child_widget\main.cc 
..\tests\child_widget\testwindow.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget2.exe: $(GTKMM_LIB) ..\tests\child_widget2\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget_managed.exe: $(GTKMM_LIB) 
..\tests\child_widget_managed\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-delete_cpp_child.exe: $(GTKMM_LIB) ..\tests\delete_cpp_child\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-dialog.exe: $(GTKMM_LIB) ..\tests\dialog\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-dialog_deletethis.exe: $(GTKMM_LIB) ..\tests\dialog_deletethis\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-gdk_rgba.exe: $(GTKMM_LIB) ..\tests\gdk_rgba\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-main_with_options.exe: $(GTKMM_LIB) ..\tests\main_with_options\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-menu_destruction.exe: $(GTKMM_LIB) ..\tests\menu_destruction\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-object_move.exe: $(GTKMM_LIB) ..\tests\object_move\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-property_notification.exe: $(GTKMM_LIB) 
..\tests\property_notification\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-refcount_dialog.exe: $(GTKMM_LIB) ..\tests\refcount_dialog\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-scrolledwindow.exe: $(GTKMM_LIB) ..\tests\scrolledwindow\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-tree_model_iterator.exe: $(GTKMM_LIB) 
..\tests\tree_model_iterator\main.cc
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-wrap_existing.exe: $(GTKMM_LIB) ..\tests\wrap_existing\main.cc
+
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-builder.exe      \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget.exe \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget2.exe        \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-child_widget_managed.exe \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-delete_cpp_child.exe     \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-dialog.exe       \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-dialog_deletethis.exe    \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-gdk_rgba.exe     \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-main_with_options.exe    \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-menu_destruction.exe     \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-object_move.exe  \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-property_notification.exe        \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-refcount_dialog.exe      \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-scrolledwindow.exe       \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-tree_model_iterator.exe  \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-wrap_existing.exe:
+       @if not exist vs$(VSVER)\$(CFG)\$(PLAT)\$(@B) md vs$(VSVER)\$(CFG)\$(PLAT)\$(@B)
        $(CXX) $(GTKMM_DEMO_CFLAGS) $(CFLAGS) /Fo$(@D)\$(@B)\ /Fd$(@D)\$(@B)\ $**       \
        /link  $(LDFLAGS) $(GDKMM_LIB) $(GTKMM_DEMO_DEP_LIBS) -out:$@
        @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
 
 clean:
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.exe
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.dll
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.pdb
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.ilk
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.exp
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.lib
-       @-for /f %d in ('dir /ad /b ..\tests\') do @(for %x in (obj pdb) do @if exist 
vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-%d\ del /f/q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-%d\*.%x)
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\demo_resources.c
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\*.pdb
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\*.obj
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\private\*.h
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\*.def
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\*.res
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\*.pdb
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\*.obj
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\*.h
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\*.cc
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\private\*.h
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\*.def
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\*.res
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\*.pdb
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\*.obj
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\*.cc
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\*.h
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gendef\*.pdb
-       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gendef\*.obj
-       @-for /f %d in ('dir /ad /b ..\tests\') do @(for %x in (obj pdb) do @if exist 
vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-%d\ rd vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-test-%d)
-       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo
-       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\private
-       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm
-       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\private
-       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm
-       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\gendef
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exe
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.dll
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.pdb
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.ilk
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exp
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.lib
+       @-for /f %d in ('dir /ad /b ..\tests\') do @(for %x in (obj pdb) do @if exist 
vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-%d\ del /f/q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-%d\*.%x)
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\demo_resources.c
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\*.pdb
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\*.obj
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\private\*.h
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\*.def
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\*.res
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\*.pdb
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\*.obj
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\*.h
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\*.cc
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\private\*.h
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\*.def
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\*.res
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\*.pdb
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\*.obj
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\*.cc
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\*.h
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gendef\*.pdb
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gendef\*.obj
+       @-for /f %d in ('dir /ad /b ..\tests\') do @(for %x in (obj pdb) do @if exist 
vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-%d\ rd vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-test-%d)
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\private
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\private
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\gendef
 
 .SUFFIXES: .cc .ccg .h .hg .obj
diff --git a/MSVC_NMake/config-msvc.mak b/MSVC_NMake/config-msvc.mak
index 35f3385a..5460b47f 100644
--- a/MSVC_NMake/config-msvc.mak
+++ b/MSVC_NMake/config-msvc.mak
@@ -123,20 +123,20 @@ GTKMM_DEMO_DEP_LIBS = $(GTKMM_DEP_LIBS) $(EPOXY_LIB)
 # CXXFLAGS
 GDKMM_BASE_CFLAGS =            \
        /EHsc   \
-       /Ivs$(PDBVER)\$(CFG)\$(PLAT)    \
+       /Ivs$(VSVER)\$(CFG)\$(PLAT)     \
        /I..\untracked\gdk      \
        /I..\gdk /I.\gdkmm      \
        /wd4530 /wd4251 /wd4273 /wd4275 \
        /FImsvc_recommended_pragmas.h
 
-!if $(PDBVER) >= 14
+!if $(VSVER) >= 14
 GDKMM_BASE_CFLAGS =            \
        $(GDKMM_BASE_CFLAGS)    \
        /utf-8 /wd4828  \
 !endif
 
 GTKMM_BASE_CFLAGS =            \
-       /Ivs$(PDBVER)\$(CFG)\$(PLAT)    \
+       /Ivs$(VSVER)\$(CFG)\$(PLAT)     \
        /I..\untracked\gtk      \
        /I..\gtk /I.\gtkmm      \
        /wd4250                         \
@@ -162,10 +162,10 @@ GTKMM_DEMO_CFLAGS =       \
 GTKMM_DEMO_CFLAGS = $(GTKMM_DEMO_CFLAGS:/EHsc=)
 !endif
 
-# We build gdkmm-vc$(PDBVER)0-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION).dll or
-#          gdkmm-vc$(PDBVER)0-d-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION).dll at least
-#          gtkmm-vc$(PDBVER)0-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION).dll or
-#          gtkmm-vc$(PDBVER)0-d-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION).dll at least
+# We build gdkmm-vc$(VSVER_LIB)-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION).dll or
+#          gdkmm-vc$(VSVER_LIB)-d-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION).dll at least
+#          gtkmm-vc$(VSVER_LIB)-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION).dll or
+#          gtkmm-vc$(VSVER_LIB)-d-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION).dll at least
 
 !ifdef USE_MESON_LIBS
 LIBSIGC_LIBNAME = sigc-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)
@@ -183,11 +183,11 @@ PANGOMM_DLL = $(PANGOMM_LIBNAME)-1.dll
 ATKMM_DLL = $(ATKMM_LIBNAME)-1.dll
 !else
 LIBSIGC_LIBNAME = sigc-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(LIBSIGC_MAJOR_VERSION)_$(LIBSIGC_MINOR_VERSION)
-GLIBMM_LIBNAME = glibmm-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(GLIBMM_MAJOR_VERSION)_$(GLIBMM_MINOR_VERSION)
-GIOMM_LIBNAME = giomm-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(GLIBMM_MAJOR_VERSION)_$(GLIBMM_MINOR_VERSION)
-CAIROMM_LIBNAME = cairomm-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(CAIROMM_MAJOR_VERSION)_$(CAIROMM_MINOR_VERSION)
-PANGOMM_LIBNAME = pangomm-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(PANGOMM_MAJOR_VERSION)_$(PANGOMM_MINOR_VERSION)
-ATKMM_LIBNAME = atkmm-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(ATKMM_MAJOR_VERSION)_$(ATKMM_MINOR_VERSION)
+GLIBMM_LIBNAME = glibmm-vc$(VSVER_LIB)$(DEBUG_SUFFIX)-$(GLIBMM_MAJOR_VERSION)_$(GLIBMM_MINOR_VERSION)
+GIOMM_LIBNAME = giomm-vc$(VSVER_LIB)$(DEBUG_SUFFIX)-$(GLIBMM_MAJOR_VERSION)_$(GLIBMM_MINOR_VERSION)
+CAIROMM_LIBNAME = cairomm-vc$(VSVER_LIB)$(DEBUG_SUFFIX)-$(CAIROMM_MAJOR_VERSION)_$(CAIROMM_MINOR_VERSION)
+PANGOMM_LIBNAME = pangomm-vc$(VSVER_LIB)$(DEBUG_SUFFIX)-$(PANGOMM_MAJOR_VERSION)_$(PANGOMM_MINOR_VERSION)
+ATKMM_LIBNAME = atkmm-vc$(VSVER_LIB)$(DEBUG_SUFFIX)-$(ATKMM_MAJOR_VERSION)_$(ATKMM_MINOR_VERSION)
 
 LIBSIGC_DLL = $(LIBSIGC_LIBNAME).dll
 GLIBMM_DLL = $(GLIBMM_LIBNAME).dll
@@ -204,17 +204,17 @@ CAIROMM_LIB = $(CAIROMM_LIBNAME).lib
 PANGOMM_LIB = $(PANGOMM_LIBNAME).lib
 ATKMM_LIB = $(ATKMM_LIBNAME).lib
 
-GDKMM_LIBNAME = gdkmm-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION)
+GDKMM_LIBNAME = gdkmm-vc$(VSVER_LIB)$(DEBUG_SUFFIX)-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION)
 
-GDKMM_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).dll
-GDKMM_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).lib
+GDKMM_DLL = vs$(VSVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).dll
+GDKMM_LIB = vs$(VSVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).lib
 
-GTKMM_LIBNAME = gtkmm-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION)
+GTKMM_LIBNAME = gtkmm-vc$(VSVER_LIB)$(DEBUG_SUFFIX)-$(GTKMM_MAJOR_VERSION)_$(GTKMM_MINOR_VERSION)
 
-GTKMM_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).dll
-GTKMM_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).lib
+GTKMM_DLL = vs$(VSVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).dll
+GTKMM_LIB = vs$(VSVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).lib
 
-GTKMM3_DEMO = vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo$(DEBUG_SUFFIX).exe
+GTKMM3_DEMO = vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo$(DEBUG_SUFFIX).exe
 
 TARGETS = $(GTKMM_LIB)
 
@@ -225,7 +225,7 @@ TARGETS = $(TARGETS) $(GTKMM3_DEMO)
 !endif
 
 
-GENDEF = vs$(PDBVER)\$(CFG)\$(PLAT)\gendef.exe
+GENDEF = vs$(VSVER)\$(CFG)\$(PLAT)\gendef.exe
 
 GTKMM_INT_EXTRA_SOURCES = $(gtkmm_files_extra_any_cc)
 GTKMM_INT_EXTRA_HEADERS_P = $(gtkmm_files_extra_ph:/=\)
diff --git a/MSVC_NMake/create-lists-msvc.mak b/MSVC_NMake/create-lists-msvc.mak
index 2d335fdb..1ac3abe6 100644
--- a/MSVC_NMake/create-lists-msvc.mak
+++ b/MSVC_NMake/create-lists-msvc.mak
@@ -40,13 +40,13 @@ gdkmm_generated_private_headers = $(files_hg:.hg=_p.h)
 !if [call create-lists.bat header gtkmm.mak gdkmm_OBJS]
 !endif
 
-!if [for %c in ($(GDKMM_INT_GENERATED_SOURCES)) do @if "%~xc" == ".cc" @call create-lists.bat file gtkmm.mak 
^vs$(PDBVER)\^$(CFG)\^$(PLAT)\gdkmm\%~nc.obj]
+!if [for %c in ($(GDKMM_INT_GENERATED_SOURCES)) do @if "%~xc" == ".cc" @call create-lists.bat file gtkmm.mak 
^vs$(VSVER)\^$(CFG)\^$(PLAT)\gdkmm\%~nc.obj]
 !endif
 
-!if [for %c in ($(gdkmm_files_extra_cc)) do @if "%~xc" == ".cc" @call create-lists.bat file gtkmm.mak 
^vs$(PDBVER)\^$(CFG)\^$(PLAT)\gdkmm\%~nc.obj]
+!if [for %c in ($(gdkmm_files_extra_cc)) do @if "%~xc" == ".cc" @call create-lists.bat file gtkmm.mak 
^vs$(VSVER)\^$(CFG)\^$(PLAT)\gdkmm\%~nc.obj]
 !endif
 
-!if [@call create-lists.bat file gtkmm.mak ^vs$(PDBVER)\^$(CFG)\^$(PLAT)\gdkmm\gdkmm.res]
+!if [@call create-lists.bat file gtkmm.mak ^vs$(VSVER)\^$(CFG)\^$(PLAT)\gdkmm\gdkmm.res]
 !endif
 
 !if [call create-lists.bat footer gtkmm.mak]
@@ -56,13 +56,13 @@ gdkmm_generated_private_headers = $(files_hg:.hg=_p.h)
 !if [call create-lists.bat header gtkmm.mak gtkmm_OBJS]
 !endif
 
-!if [for %c in ($(GTKMM_INT_GENERATED_SOURCES)) do @if "%~xc" == ".cc" @call create-lists.bat file gtkmm.mak 
^vs$(PDBVER)\^$(CFG)\^$(PLAT)\gtkmm\%~nc.obj]
+!if [for %c in ($(GTKMM_INT_GENERATED_SOURCES)) do @if "%~xc" == ".cc" @call create-lists.bat file gtkmm.mak 
^vs$(VSVER)\^$(CFG)\^$(PLAT)\gtkmm\%~nc.obj]
 !endif
 
-!if [for %c in ($(GTKMM_INT_EXTRA_SOURCES)) do @if "%~xc" == ".cc" @call create-lists.bat file gtkmm.mak 
^vs$(PDBVER)\^$(CFG)\^$(PLAT)\gtkmm\%~nc.obj]
+!if [for %c in ($(GTKMM_INT_EXTRA_SOURCES)) do @if "%~xc" == ".cc" @call create-lists.bat file gtkmm.mak 
^vs$(VSVER)\^$(CFG)\^$(PLAT)\gtkmm\%~nc.obj]
 !endif
 
-!if [@call create-lists.bat file gtkmm.mak ^vs$(PDBVER)\^$(CFG)\^$(PLAT)\gtkmm\gtkmm.res]
+!if [@call create-lists.bat file gtkmm.mak ^vs$(VSVER)\^$(CFG)\^$(PLAT)\gtkmm\gtkmm.res]
 !endif
 
 !if [call create-lists.bat footer gtkmm.mak]
@@ -90,10 +90,10 @@ gdkmm_generated_private_headers = $(files_hg:.hg=_p.h)
 !if [call create-lists.bat header gtkmm.mak gtkmm_demo_OBJS]
 !endif
 
-!if [for %s in (..\demos\gtk-demo\*.cc) do @call create-lists.bat file gtkmm.mak 
^vs$(PDBVER)\^$(CFG)\^$(PLAT)\gtkmm3-demo\%~ns.obj]
+!if [for %s in (..\demos\gtk-demo\*.cc) do @call create-lists.bat file gtkmm.mak 
^vs$(VSVER)\^$(CFG)\^$(PLAT)\gtkmm3-demo\%~ns.obj]
 !endif
 
-!if [@call create-lists.bat file gtkmm.mak ^vs$(PDBVER)\^$(CFG)\^$(PLAT)\gtkmm3-demo\demo_resources.obj]
+!if [@call create-lists.bat file gtkmm.mak ^vs$(VSVER)\^$(CFG)\^$(PLAT)\gtkmm3-demo\demo_resources.obj]
 !endif
 
 !if [call create-lists.bat footer gtkmm.mak]
@@ -135,16 +135,16 @@ gdkmm_generated_private_headers = $(files_hg:.hg=_p.h)
 !if [call create-lists.bat header gtkmm.mak gtkmm_tests]
 !endif
 
-!if [for /f %d in ('dir /ad /b ..\tests\') do @call create-lists.bat file gtkmm.mak 
^vs$(PDBVER)\^$(CFG)\^$(PLAT)\gtkmm3-test-%d.exe]
+!if [for /f %d in ('dir /ad /b ..\tests\') do @call create-lists.bat file gtkmm.mak 
^vs$(VSVER)\^$(CFG)\^$(PLAT)\gtkmm3-test-%d.exe]
 !endif
 
 !if [call create-lists.bat footer gtkmm.mak]
 !endif
 
-!if [for %f in (gdkmm\applaunchcontext.h) do @if not exist ..\untracked\gdk\%f if not exist ..\gdk\%f if not 
exist vs$(PDBVER)\$(CFG)\$(PLAT)\%f (md vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\private) & ($(PERL) -- 
$(GMMPROC_DIR)/gmmproc -I ../tools/m4 -I $(GMMPROC_PANGO_DIR) -I $(GMMPROC_ATK_DIR) --defs ../gdk/src 
applaunchcontext ../gdk/src vs$(PDBVER)/$(CFG)/$(PLAT)/gdkmm)]
+!if [for %f in (gdkmm\applaunchcontext.h) do @if not exist ..\untracked\gdk\%f if not exist ..\gdk\%f if not 
exist vs$(VSVER)\$(CFG)\$(PLAT)\%f (md vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\private) & ($(PERL) -- 
$(GMMPROC_DIR)/gmmproc -I ../tools/m4 -I $(GMMPROC_PANGO_DIR) -I $(GMMPROC_ATK_DIR) --defs ../gdk/src 
applaunchcontext ../gdk/src vs$(VSVER)/$(CFG)/$(PLAT)/gdkmm)]
 !endif
 
-!if [for %d in (vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm ..\untracked\gdk\gdkmm ..\gdk\gdkmm) do @if exist 
%d\applaunchcontext.h call get-gmmproc-ver %d\applaunchcontext.h>>gtkmm.mak]
+!if [for %d in (vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm ..\untracked\gdk\gdkmm ..\gdk\gdkmm) do @if exist 
%d\applaunchcontext.h call get-gmmproc-ver %d\applaunchcontext.h>>gtkmm.mak]
 !endif
 
 !include gtkmm.mak
@@ -153,11 +153,11 @@ gdkmm_generated_private_headers = $(files_hg:.hg=_p.h)
 !endif
 
 !if "$(GMMPROC_VER)" >= "2.64.3"
-GDKMM_INT_TARGET = vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm
-GTKMM_INT_TARGET = vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm
+GDKMM_INT_TARGET = vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm
+GTKMM_INT_TARGET = vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm
 GDKMM_DEF_LDFLAG =
 !else
-GDKMM_INT_TARGET = vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\gdkmm.def
+GDKMM_INT_TARGET = vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\gdkmm.def
 GDKMM_DEF_LDFLAG = /def:$(GDKMM_INT_TARGET)
 GDKMM_BASE_CFLAGS = $(GDKMM_BASE_CFLAGS) /DGDKMM_USE_GENDEF
 GTKMM_INT_TARGET = $(GDKMM_INT_TARGET:gdk=gtk)
diff --git a/MSVC_NMake/detectenv-msvc.mak b/MSVC_NMake/detectenv-msvc.mak
index 634fe684..38bc704a 100644
--- a/MSVC_NMake/detectenv-msvc.mak
+++ b/MSVC_NMake/detectenv-msvc.mak
@@ -8,7 +8,7 @@
 # in $(GLIB_PREFIX)\lib.
 
 !if "$(PREFIX)" == ""
-PREFIX = ..\..\vs$(PDBVER)\$(PLAT)
+PREFIX = ..\..\vs$(VSVER)\$(PLAT)
 !endif
 
 # Location of the PERL interpreter, for running glib-mkenums.  glib-mkenums
@@ -79,34 +79,45 @@ _HASH=^#
 !if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc]
 !endif
 
+VSVER = 0
+PDBVER = 0
+VSVER_SUFFIX = 0
+
 !if $(VCVERSION) > 1499 && $(VCVERSION) < 1600
-VSVER = 9
+PDBVER = 9
 !elseif $(VCVERSION) > 1599 && $(VCVERSION) < 1700
-VSVER = 10
+PDBVER = 10
 !elseif $(VCVERSION) > 1699 && $(VCVERSION) < 1800
-VSVER = 11
+PDBVER = 11
 !elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900
-VSVER = 12
-!elseif $(VCVERSION) > 1899 && $(VCVERSION) < 1910
-VSVER = 14
-!elseif $(VCVERSION) > 1909 && $(VCVERSION) < 2000
+PDBVER = 12
+!elseif $(VCVERSION) > 1899 && $(VCVERSION) < 2000
+PDBVER = 14
+!if $(VCVERSION) > 1909 && $(VCVERSION) < 1920
+VSVER_SUFFIX = 1
 VSVER = 15
+!elseif $(VCVERSION) > 1919 && $(VCVERSION) < 2000
+VSVER_SUFFIX = 2
+VSVER = 16
 !else
-VSVER = 0
+VSVER = $(PDBVER)
+!endif
+!else
+VSVER = $(PDBVER)
+!endif
+
+!if $(VSVER) > 14 && "$(USE_COMPAT_LIBS)" != ""
+VSVER_LIB = $(PDBVER)0
+!else
+VSVER_LIB = $(PDBVER)$(VSVER_SUFFIX)
 !endif
 
 !if "$(VSVER)" == "0"
 MSG = ^
 This NMake Makefile set supports Visual Studio^
-9 (2008) through 15 (2017).  Your Visual Studio^
+9 (2008) through 16 (2019).  Your Visual Studio^
 version is not supported.
 !error $(MSG)
-!else
-!if $(VSVER) < 15
-PDBVER = $(VSVER)
-!else
-PDBVER = 14
-!endif
 !endif
 
 VALID_CFGSET = FALSE
diff --git a/MSVC_NMake/generate-msvc.mak b/MSVC_NMake/generate-msvc.mak
index 6a340c51..febdb464 100644
--- a/MSVC_NMake/generate-msvc.mak
+++ b/MSVC_NMake/generate-msvc.mak
@@ -4,24 +4,24 @@
 # one is maintaining the NMake build files.
 
 # Create the build directories
-vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm       \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm       \
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo:
+vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm        \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm        \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo:
        @-md $@
 
 # Generate .def files
-vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\gdkmm.def: $(GENDEF) vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm $(gdkmm_OBJS)
-       vs$(PDBVER)\$(CFG)\$(PLAT)\gendef.exe $@ $(GDKMM_LIBNAME) vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\*.obj
+vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\gdkmm.def: $(GENDEF) vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm $(gdkmm_OBJS)
+       vs$(VSVER)\$(CFG)\$(PLAT)\gendef.exe $@ $(GDKMM_LIBNAME) vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\*.obj
 
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\gtkmm.def: $(GENDEF) vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm $(gtkmm_OBJS)
-       vs$(PDBVER)\$(CFG)\$(PLAT)\gendef.exe $@ $(GTKMM_LIBNAME) vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\*.obj
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\gtkmm.def: $(GENDEF) vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm $(gtkmm_OBJS)
+       vs$(VSVER)\$(CFG)\$(PLAT)\gendef.exe $@ $(GTKMM_LIBNAME) vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\*.obj
 
 # Generate wrap_init.cc files
-vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\wrap_init.cc: $(gdkmm_real_hg)
+vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\wrap_init.cc: $(gdkmm_real_hg)
        @if not exist ..\gdk\gdkmm\wrap_init.cc $(PERL) -- "$(GMMPROC_DIR)/generate_wrap_init.pl" 
--namespace=Gdk --parent_dir=gdkmm $(gdkmm_real_hg:\=/)>$@
 
 # Avoid the dreaded U1095 command line error... @#$@#!
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\wrap_init.cc: $(gtkmm_real_hg)
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\wrap_init.cc: $(gtkmm_real_hg)
        @if exist $@ del $@
        @echo @echo off>gen_$(@B).bat
        @echo.>>gen_$(@B).bat
@@ -32,7 +32,7 @@ vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\wrap_init.cc: $(gtkmm_real_hg)
        @del gen_$(@B).bat
 
 # Generate demo GResource source file
-vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo\demo_resources.c:       \
+vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo\demo_resources.c:        \
 $(gtkmm_demo_example_sources)  \
 $(gtkmm_demo_resources)        \
 ..\demos\gtk-demo\demo.gresource.xml
diff --git a/MSVC_NMake/install.mak b/MSVC_NMake/install.mak
index a227a33c..a32876bf 100644
--- a/MSVC_NMake/install.mak
+++ b/MSVC_NMake/install.mak
@@ -7,26 +7,26 @@ install: all
        @if not exist $(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gdkmm\private\ 
@md $(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gdkmm\private
        @if not exist $(PREFIX)\lib\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\include\ md 
$(PREFIX)\lib\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\include
        @if not exist $(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\private\ 
@md $(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\private
-       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo.exe copy /b 
vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo.exe $(PREFIX)\bin
-       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo.pdb copy /b 
vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm3-demo.pdb $(PREFIX)\bin
-       @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).dll $(PREFIX)\bin
-       @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).dll $(PREFIX)\bin
-       @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).pdb $(PREFIX)\bin
-       @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).pdb $(PREFIX)\bin
-       @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).lib $(PREFIX)\lib
-       @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).lib $(PREFIX)\lib
+       @if exist vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo.exe copy /b vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo.exe 
$(PREFIX)\bin
+       @if exist vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo.pdb copy /b vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm3-demo.pdb 
$(PREFIX)\bin
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).dll $(PREFIX)\bin
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).dll $(PREFIX)\bin
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).pdb $(PREFIX)\bin
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).pdb $(PREFIX)\bin
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GDKMM_LIBNAME).lib $(PREFIX)\lib
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GTKMM_LIBNAME).lib $(PREFIX)\lib
        @copy ..\gdk\gdkmm.h "$(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\"
        @for %h in ($(gdkmm_files_extra_h)) do @copy ..\gdk\gdkmm\%h 
"$(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gdkmm\%h"
        @for %h in ($(GDKMM_INT_GENERATED_HEADERS)) do @if exist ..\gdk\gdkmm\%h copy ..\gdk\gdkmm\%h 
"$(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gdkmm\%h"
-       @for %h in ($(GDKMM_INT_GENERATED_HEADERS)) do @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\%h copy 
vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\%h 
"$(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gdkmm\%h"
+       @for %h in ($(GDKMM_INT_GENERATED_HEADERS)) do @if exist vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\%h copy 
vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\%h 
"$(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gdkmm\%h"
        @for %h in ($(GDKMM_INT_GENERATED_HEADERS_P)) do @if exist ..\gdk\gdkmm\private\%h copy 
..\gdk\gdkmm\private\%h 
"$(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gdkmm\private\%h"
-       @for %h in ($(GDKMM_INT_GENERATED_HEADERS_P)) do @if exist 
vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\private\%h copy vs$(PDBVER)\$(CFG)\$(PLAT)\gdkmm\private\%h 
"$(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gdkmm\private\%h"
+       @for %h in ($(GDKMM_INT_GENERATED_HEADERS_P)) do @if exist vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\private\%h 
copy vs$(VSVER)\$(CFG)\$(PLAT)\gdkmm\private\%h 
"$(PREFIX)\include\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gdkmm\private\%h"
        @copy ".\gdkmm\gdkmmconfig.h" 
"$(PREFIX)\lib\gdkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\include\"
        @copy ..\gtk\gtkmm.h "$(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\"
        @for %h in ($(GTKMM_INT_EXTRA_HEADERS)) do @copy ..\gtk\gtkmm\%h 
"$(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\%h"
        @for %h in ($(GTKMM_INT_GENERATED_HEADERS)) do @if exist ..\gtk\gtkmm\%h copy ..\gtk\gtkmm\%h 
"$(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\%h"
-       @for %h in ($(GTKMM_INT_GENERATED_HEADERS)) do @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\%h copy 
vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\%h 
"$(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\%h"
+       @for %h in ($(GTKMM_INT_GENERATED_HEADERS)) do @if exist vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\%h copy 
vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\%h 
"$(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\%h"
        @for %h in ($(GTKMM_INT_EXTRA_HEADERS_P)) do @copy ..\gtk\gtkmm\%h 
"$(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\%h"
        @for %h in ($(GTKMM_HG_FILES)) do @if exist ..\gtk\gtkmm\private\%~nh_p.h copy 
..\gtk\gtkmm\private\%~nh_p.h 
"$(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\private\%~nh_p.h"
-       @for %h in ($(GTKMM_HG_FILES)) do @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\private\%~nh_p.h copy 
vs$(PDBVER)\$(CFG)\$(PLAT)\gtkmm\private\%~nh_p.h 
"$(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\private\%~nh_p.h"
+       @for %h in ($(GTKMM_HG_FILES)) do @if exist vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\private\%~nh_p.h copy 
vs$(VSVER)\$(CFG)\$(PLAT)\gtkmm\private\%~nh_p.h 
"$(PREFIX)\include\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\gtkmm\private\%~nh_p.h"
        @copy ".\gtkmm\gtkmmconfig.h" 
"$(PREFIX)\lib\gtkmm-$(GTKMM_MAJOR_VERSION).$(GTKMM_MINOR_VERSION)\include\"


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]