gtkgtkmmgtkmm3gtkmm4

Make compiler warn about Gtkmm deprecations


I starting to look into porting my application from Gtkmm 3.24 to Gtkmm 4.x (not sure which version yet). For now, I am only trying to understand what exactly is deprecated and how much work is needed for planning. One way to ease porting is to look into all deprecated usages in the Gtkmm 3.24 version and update them to the newer flavor before porting. I have found several macros that can help with that:

GTKMM_DISABLE_DEPRECATED
GDKMM_DISABLE_DEPRECATED
GLIBMM_DISABLE_DEPRECATED
GIOMM_DISABLE_DEPRECATED

When I #define these, the compiler throws error when meeting deprecated stuff because they have been disabled. This is nice, once the code is leveled up, to make sure the code stays free of deprecated usages.

In my case, however, the code is still full of deprecations and the compiler stops compilation on the first deprecation it meets. This does not help me much in understanding where the deprecations lie and how much work is needed. I could go about and solve every error, one by one, until there is no more (this is ultimately what I will do) but I can't know ahead how much time this will take.

What I would really like are macros that throw warnings when meeting deprecation, but let the compiler go on about building. This way I could get a list of everything that is deprecated in my codebase and plan work appropriately. I have browsed the Gtkmm documentation and codebase but found nothing.

Do such macros exist and if so, what are they?


Solution

  • The solution was to use

    GTKMM_DISABLE_DEPRECATED
    GDKMM_DISABLE_DEPRECATED
    GLIBMM_DISABLE_DEPRECATED
    GIOMM_DISABLE_DEPRECATED
    

    like I did but to use the -k flag with make. From man make:

    -k, --keep-going
         Continue  as  much  as  possible after an error.  While the target
         that failed, and those that depend on it, cannot  be  remade,  the
         other dependencies of these targets can be processed all the same.
    

    Source: Inkscape GTK+ 3 migration wiki page.