.TH FREETYPE-CONFIG 1 "September 2016" "FreeType 2.7"
.
.
.SH NAME
.
freetype-config \- Get information about a libfreetype installation
.
.
.SH SYNOPSIS
.
.B freetype-config
.RI [ options ]
.
.
.SH DESCRIPTION
.
.B freetype-config
returns information needed for compiling and linking programs with the
FreeType library, such as linker flags and compilation parameters.
.
Alternatively, it can be used to query information about the
FreeType library version installed on the system, such as the
installation (directory path) prefix or the FreeType version number.
.
.PP
This program is part of the FreeType package.
.
.
.SH OPTIONS
.
There are two types of options: output/display selection options, and
path override options.
.
.
.SS Output selection options
.
Only one of the output selection options should be given at each program
invocation.
.
.TP
.B \-\-prefix
Return the prefix value of the installed FreeType library (the default
prefix will be `/usr' in most cases for distribution-installed
packages).
.
.TP
.B \-\-exec-prefix
Return the executable prefix value of the installed FreeType library
(will often be the same as the prefix value).
.
.TP
.B \-\-ftversion
Return the FreeType version number.
.
.TP
.B \-\-version
Return the `libtool version' of the FreeType library.
.
.TP
.B \-\-libtool
Return the library name for linking with libtool.
.
.TP
.B \-\-libs
Return compiler flags for linking with the installed FreeType library.
.
.TP
.B \-\-cflags
Return compiler flags for compiling against the installed FreeType library.
.
.TP
.B \-\-static
Make command line options display flags for static linking.
.
.
.SS Path override options
.
These affect any selected output option, except the libtool version
returned by `--version'.
.
.TP
.BI \-\-prefix= PREFIX
Override `--prefix' value with
.IR PREFIX .
.
.TP
.BI \-\-exec-prefix= EPREFIX
Override `--exec-prefix' value with
.IR EPREFIX .
.
.
.SH BUGS
In case the libraries FreeType links to are located in non-standard
directories, the output from option
.B \-\-libs
might be incomplete.
It is thus recommended to use the
.BR pkg-config (1)
interface instead, which is able to correctly resolve all dependencies.
.
.
.SH AUTHOR
.
This manual page was contributed by Nis Martensen <nis.martensen@web.de>,
with further refinements from the FreeType team.
.
.
.\" eof
