LIBS ve INC parametreleri için * .mk dosyası içinde tanımları kullanarak, belirli dizinleri ve C kütüphanelerini projeye bağlı olarak içerecek şekilde listeleyen bir üst düzey tanımlarım var. yani. ExtUtils :: MakeMaker harici * .mk dahil olmak üzere ve WriteMakefile
KERNEL_LIB = -lkdev
DRIVER_LIB = -ldriver -lutil -linit $(KERNEL_LIB)
DRIVER_INCLUDE = -I../../include
Ben perl komut ben Makefile oluşturulduğunda, bu tanımlayıp çeker o böyle yapmak istiyorum. Bu kütüphaneler bağlayacak Makefile oluşturmak üzere bu kütüphaneler ve MakeMaker erişmesine izin vermek için XS kullanabilirsiniz.
Ben şimdi öyle benziyor bu Makefile.PL
use 5.008008;
use ExtUtils::MakeMaker;
use ExtUtils::MM_Unix;
use ExtUtils::MM;
sub MY::post_initialize {
open my $defs, '<', 'defines.mk';
my $extra_defines = join '', <$defs>;
close $defs;
return $extra_defines;
}
sub MM::init_others {
my $self = shift;
$self->ExtUtils::MM_Unix::init_others(@_);
$self->{EXTRALIBS} = '-L/usr/local/app/lib $(DRIVER_LIB) -lpthread -lrt';
$self->{BSLOADLIBS} = $self->{LDLOADLIBS} = $self->{EXTRALIBS};
}
WriteMakefile(
NAME => 'generic_scripts',
VERSION_FROM => 'generic_scripts.pm',
DEFINE => '',
INC => '$(DRIVER_INCLUDE)',
clean => {FILES=>"*.o"},
);
sahip @mobrule itibaren bu
WriteMakefile(
NAME => 'generic_scripts',
VERSION_FROM => 'generic_scripts.pm',
LIBS => ['-L/usr/local/dx/lib $(KERNEL_LIB) -lpthread -lrt $(DRIVER_LIB)'],
DEFINE => '',
INC => '$(DRIVER_INCLUDE)',
clean => {FILES=>"*.o"},
);
ulaşmak istiyoruz bu
WriteMakefile(
NAME => 'generic_scripts',
VERSION_FROM => 'generic_scripts.pm',
LIBS => ['-L/usr/local/app/lib -lkdev -lpthread -lrt -ldriver -lutil -linit'],
DEFINE => '',
INC => '-I../../include',
clean => {FILES=>"*.o"},
);
gibi WriteMakefile Verilen istediğim. Teşekkürler!
Burada bir soru var mı? Hangi kısımda sorun yaşıyorsun? Ne denedin? – cjm
Peki, bunu yapmanın bir yolu var mı diye merak ediyorum. Belgelere çevrimiçi bakıldığında, WriteMakefile'nin parametrelerinden hiçbirinin bunu başaramayacağı açıkça görülmez. Ben defines.mk dosyasını Makefile.PL içine alıp ayrıştırabilirim ama daha kolay bir yol var mı? – colekas