NAME

PkgConfig::LibPkgConf::Package - Represents a package

SYNOPSIS

use PkgConfig::LibPkgConf::Client;

my $client = PkgConfig::LibPkgConf::Client->new;
$client->env;

my $pkg = $client->find('libarchive');

# use with system in scalar form:
my $cflags = $pkg->cflags;
my $libs = $pkg->libs;
system "$cc $cflags foo.c";
system "$cc -o foo foo.o $libs";

# use with system in list form:
my @cflags = $pkg->list_cflags;
my @libs   = $pkg->list_libs;
system $cc, @cflags, 'foo.c';
system $cc, -p => 'foo', 'foo.o', @libs;

DESCRIPTION

The PkgConfig::LibPkgConf::Package object stores package information. Part of the package information is the compiler and linker flags. This can be fetched as strings with cflags and libs and as a list with list_cflags and list_libs. In the string form, escapes are retained, but in list form the white space escapes are converted into spaces. That means if you are using the string form of system/exec you should use the string accessors, and if you are using the list form of system/exec you should use the list accessors.

ATTRIBUTES

refcount

Internal reference count used by pkgconf.

id

The id of the package.

filename

The filename of the .pc file.

realname

The real name for the package.

version

The version of the package.

description

Description of the package.

url

URL for the package.

pc_filedir

TODO

METHODS

libs

Library flags. This usually includes things like -L/foo/lib and -lfoo.

libs_static

Static library flags.

cflags

Compiler flags. This usually includes things like -I/foo/include and -DFOO=1.

cflags_static

Static compiler flags.

list_libs

my @fragments = $package->list_libs;

Library flags as a list of fragments PkgConfig::LibPkgConf::Fragment. This is similar to the libs method above, but since it returns a list instead of a single string, it can be used to filter for specific flags. For example:

# equivalent to pkgconf --libs-only-L
my @lib_dirs = grep { $_->type eq 'L' } $package->list_libs;
# equivalent to pkgconf --libs-only-l
my @libs = grep { $_->type eq 'l' } $package->list_libs;

list_libs_static

my @fragments = $package->list_libs_static;

Similar to list_libs, but for the static libs flags.

list_cflags

my @fragments = $package->list_cflags;

Compiler flags as a list of fragments PkgConfig::LibPkgConf::Fragment. This is similar to the cflags method above, but since it returns a list instead of a single string, it can be used to filter for specific flags. For example:

# equivalent to pkgconf --cflags-only-I
my @include_dirs = grep { $_->type eq 'I' } $package->list_cflags;
# equivalent to pkgconf --cflags-only-other
my @other_cflags = grep { $_->type ne 'I' } $package->list_cflags;

list_cflags_static

my @fragments = $package->list_cflags_static;

Similar to list_cflags, but for the static compiler flags.

variable

my $value = $package->variable($key);

Look up the value for the given variable. Returns the value if found, otherwise it will return undef (technically empty list).

SUPPORT

IRC #native on irc.perl.org

Project GitHub tracker:

https://github.com/plicease/PkgConfig-LibPkgConf/issues

If you want to contribute, please open a pull request on GitHub:

https://github.com/plicease/PkgConfig-LibPkgConf/pulls

SEE ALSO

For additional related modules, see PkgConfig::LibPkgConf

AUTHOR

Graham Ollis

For additional contributors see PkgConfig::LibPkgConf

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 Graham Ollis.

This is free software; you may redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.