1. GTK+ How To
We've decided to add a how-to-do-what-you-want section to the Wiki pages, where we provide examples and explanations to questions asked about various aspects of GTK+.
If you have a question that needs answering, or have an answer to a question (or even both!), feel free to add them to this collection yourself.
1.1. Introduction
How do I:
1.2. Best practises for using GTK+ in your project
The examples are assuming an autotooled setup, many of the tips can be adapted to othr build systems if needed.
Good example: http://git.gnome.org/cgit/gnome-power-manager/tree/configure.ac
- Use AM_SILENT_RULES
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
- Compilation warnings:
See this blog post: http://blogs.gnome.org/otte/2008/12/22/warning-options/
GNOME_COMPILE_WARNINGS(maximum) if test "$GCC" = "yes"; then WARNINGFLAGS="$WARNINGFLAGS -Wall" WARNINGFLAGS="$WARNINGFLAGS -Wextra" #Company # WARNINGFLAGS="$WARNINGFLAGS -Waggregate-return" WARNINGFLAGS="$WARNINGFLAGS -Wcast-align" WARNINGFLAGS="$WARNINGFLAGS -Wcast-align -Wno-uninitialized" WARNINGFLAGS="$WARNINGFLAGS -Wclobbered" WARNINGFLAGS="$WARNINGFLAGS -Wdeclaration-after-statement" WARNINGFLAGS="$WARNINGFLAGS -Wempty-body" WARNINGFLAGS="$WARNINGFLAGS -Werror" WARNINGFLAGS="$WARNINGFLAGS -Wformat-nonliteral" WARNINGFLAGS="$WARNINGFLAGS -Wformat-security" WARNINGFLAGS="$WARNINGFLAGS -Wignored-qualifiers" WARNINGFLAGS="$WARNINGFLAGS -Winit-self" WARNINGFLAGS="$WARNINGFLAGS -Winline" WARNINGFLAGS="$WARNINGFLAGS -Winvalid-pch" #Company WARNINGFLAGS="$WARNINGFLAGS -Wlogical-op" #Company WARNINGFLAGS="$WARNINGFLAGS -Wmissing-declarations" WARNINGFLAGS="$WARNINGFLAGS -Wmissing-format-attribute" WARNINGFLAGS="$WARNINGFLAGS -Wmissing-include-dirs" # WARNINGFLAGS="$WARNINGFLAGS -Wmissing-noreturn" WARNINGFLAGS="$WARNINGFLAGS -Wmissing-parameter-type" WARNINGFLAGS="$WARNINGFLAGS -Wmissing-prototypes" #Company WARNINGFLAGS="$WARNINGFLAGS -Wno-missing-field-initializers" #Company WARNINGFLAGS="$WARNINGFLAGS -Wno-strict-aliasing" WARNINGFLAGS="$WARNINGFLAGS -Wnested-externs" #Company WARNINGFLAGS="$WARNINGFLAGS -Wno-unused-parameter" #Company WARNINGFLAGS="$WARNINGFLAGS -Wold-style-definition" #Company WARNINGFLAGS="$WARNINGFLAGS -Woverride-init" WARNINGFLAGS="$WARNINGFLAGS -Wpacked" #Company WARNINGFLAGS="$WARNINGFLAGS -Wpointer-arith" WARNINGFLAGS="$WARNINGFLAGS -Wredundant-decls" WARNINGFLAGS="$WARNINGFLAGS -Wreturn-type" WARNINGFLAGS="$WARNINGFLAGS -Wshadow" # WARNINGFLAGS="$WARNINGFLAGS -Wsign-compare" WARNINGFLAGS="$WARNINGFLAGS -Wswitch-default" #Company # WARNINGFLAGS="$WARNINGFLAGS -Wswitch-enum" WARNINGFLAGS="$WARNINGFLAGS -Wsync-nand" #Company WARNINGFLAGS="$WARNINGFLAGS -Wtype-limits" WARNINGFLAGS="$WARNINGFLAGS -Wundef" #Company # WARNINGFLAGS="$WARNINGFLAGS -Wuninitialized" WARNINGFLAGS="$WARNINGFLAGS -Wunsafe-loop-optimizations" #Company WARNINGFLAGS="$WARNINGFLAGS -Wwrite-strings" else WARNINGFLAGS="" WARNINGFLAGS="" fi AC_SUBST(WARNINGFLAGS) AC_SUBST(WARNINGFLAGS)
Also, gcc warnings collected by BenjaminOtte from http://cgit.freedesktop.org/swfdec/swfdec/tree/configure.ac#n32 and AS_COMPILER_FLAGS macro from http://cgit.freedesktop.org/swfdec/swfdec/tree/m4/as-compiler-flag.m4
Use gnome-common compilation warnings:
GNOME_COMPILE_WARNINGS(maximum)
- Only single includes:
CPPFLAGS="${CPPFLAGS} -DG_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_SINGLE_INCLUDES"
- Not using deprecated symbols by default:
CPPFLAGS="${CPPFLAGS} -DG_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
- Use accesor functions instead direct access by default:
CPPFLAGS="${CPPFLAGS} -DGSEAL_ENABLE"