CMAKE_INSTALL_LIBDIR is an absolute path on Nix (which is a valid
thing to do). In such a case two absolute paths would get appended
resulting in a nonsense path that broke pkg-config support.
This grew out of my work creating an sfml port for macports, but should
be helpful for package maintainers of various distributions:
* add an SFML_USE_SYSTEM_DEPS option to ignore everything in extlibs/
except for headers/stb_image, and use the system versions
* install pkg-config files if a pkg-config program is found
and either lib/pkgconfig or libdata/pkgconfig exists under the
INSTALL_PREFIX, or the SFML_INSTALL_PKGCONFIG_FILES flag is set
explicitly
* install pkg-config files for static libs too, add the necessary
Requires.private and Libs.private entries to the .pc files to support
static linking
* on OS X, honor all INSTALL_NAME and RPATH related cmake variables and
only set the INSTALL_NAME_DIR to "@rpath" if none of them is set, this
preserves the default behavior of using @rpath but also allows
overriding by the usual cmake mechanisms
The modules provided are:
- sfml-system
- sfml-graphics
- sfml-window
- sfml-audio
- sfml-network
- sfml-all (depends on all the above modules)
They are installed to ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig/
which is the standard location for pkg-config files on Linux.
An example use if using autotools:
# configure.ac
AC_INIT([sfml-example],[1.0],[example@example.com])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CXX
PKG_CHECK_MODULES([sfml],
[sfml-all >= 2.0.0],
[], [AC_MSG_ERROR([SFML is required])])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
# Makefile.am
bin_PROGRAMS = sfml_example
sfml_example_SOURCES = src/sfml_example.cpp
sfml_example_CFLAGS = $(sfml_CFLAGS)
sfml_example_LIBS = $(sfml_LIBS)
An example if using hand-written Makefiles:
# Makefile
sfml-example: src/sfml-example.cpp
g++ `pkg-config --cflags --libs sfml-all` -o $@ $^