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"