Imager::Probe - hot needle of inquiry for libraries
require Imager::Probe; my %probe = ( # short name of what we're looking for (displayed to user) name => "FOO", # pkg-config lookup pkg => [ qw/name1 name2 name3/ ], # perl subs that probe for the library code => [ \&foo_probe1, \&foo_probe2 ], # or just: code => \&foo_probe, inccheck => sub { ... }, libcheck => sub { ... }, # search for this library if libcheck not supplied libbase => "foo", # library link time options, uses libbase to build options otherwise libopts => "-lfoo", # C code to check the library is sane testcode => "...", # header files needed testcodeheaders => [ "stdio.h", "foo.h" ], ); my $result = Imager::Probe->probe(\%probe) or print "Foo library not found: ",Imager::Probe->error;
Does the probes that were hidden in Imager's Makefile.PL, pulled out so the file format libraries can be externalized.
The return value is either nothing if the probe fails, or a hash containing:
INC - -I and other C options
INC
-I
LIBS - -L, -l and other link-time options
LIBS
-L
-l
DEFINE - -D options, if any.
DEFINE
-D
The possible values for the hash supplied to the probe() method are:
pkg - an array of pkg-config names to probe for. If the pkg-config checks pass, inccheck and libcheck aren't used.
pkg
inccheck
libcheck
inccheck - a code reference that checks if the supplied include directory contains the required header files.
libcheck - a code reference that checks if the supplied library directory contains the required library files. Note: the Makefile.PL version of this was supplied all of the library file names instead.
libbase - if inccheck is supplied, but libcheck isn't, then a libcheck that checks for liblibbase$Config{_a} and liblibbase.$Config{so} is created. If libopts isn't supplied then that can be synthesized as -l<libbase>.
libbase
lib
libopts
<libbase
libopts - if the libraries are found via inccheck/libcheck, these are the -l options to supply during the link phase.
code - a code reference to perform custom checks. Returns the probe result directly. Can also be an array ref of functions to call.
code
testcode - test C code that is run with Devel::CheckLib. You also need to set testcodeheaders.
testcode
testcodeheaders
testcodeprologue - C code to insert between the headers and the main function.
testcodeprologue
incpath - $Config{path_sep} separated list of header file directories to check, or a reference to an array of such.
incpath
$Config{path_sep}
libpath - $Config{path_sep} separated list of library file directories to check, or a reference to an array of such.
libpath
To install Imager, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Imager
CPAN shell
perl -MCPAN -e shell install Imager
For more information on module installation, please visit the detailed CPAN module installation guide.