Commit Graph

5 Commits

Author SHA1 Message Date
Chris Thrasher
5e18e5403b Fix Nix pkg-config support
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.
2023-12-15 09:42:56 -07:00
Jonny
27a4c83ebc Use GnuInstallDirs module for cmake install paths 2019-09-01 21:48:10 +02:00
Rafael Kitover
5fe5e5d6d7 packaging support improvements
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
2017-02-28 10:03:14 +01:00
Alex Charron
655a4dc33d Added dependencies to pkg-config files. 2012-08-02 12:05:27 -04:00
John Bartholomew
2ac7653608 Add pkg-config files, optionally installed by CMake on Linux builds.
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 $@ $^
2012-01-10 21:08:20 +00:00