プロジェクトに応じてインクルードする特定のディレクトリとCライブラリをリストするトップレベルのdefinitions.mkファイルがありますそう。ExtUtils :: MakeMaker外部* .mkを使用し、WriteMakefileのLIBSとINCパラメータに* .mkファイルを定義する
KERNEL_LIB = -lkdev
DRIVER_LIB = -ldriver -lutil -linit $(KERNEL_LIB)
DRIVER_INCLUDE = -I../../include
私はPerlスクリプトは、これらのライブラリをリンクしますどのMakefileを生成するために、これらのライブラリとのMakeMakerにアクセスできるようにXSを使用しています。私はそのようなのMakefileが生成されたときに、それはこれらの定義に引っ張ることにしたいです。
は、私は今それがないように見えるこの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"},
);
を持って@mobruleから、この
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"},
);
を達成したい、この
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"},
);
ようWriteMakefileを考えます私が望むものありがとう!
ここに質問がありますか?どの部分に問題がありますか?何を試しましたか? – cjm
さて、それを行う方法があるのか不思議です。オンラインのドキュメントを見ると、WriteMakefileのどのパラメータもこれを達成できないため、明らかに見えません。私は、define.mkファイルをMakefile.PLに引き込み、解析することができますが、簡単な方法はありますか? – colekas