文字通り何日もの間、私はWebを精査し、髪を罵倒して引き裂き、dwimperl-5.14.2.1-v7-32bit(Strawberry Perl 5.14.2.1)用のdmakeを使用してFont::FreeTypeをコンパイルしようとしています。オープナーの場合、 FreeType.xsファイルにいくつかのバグがあり、Font-FreeTypeのバグ#32713でパッチを見つけました:Font-FreeType-0.03のパッチ。素晴らしい。このモジュールの最後の更新は2004年9月11日(その日に注意)なので、確かに死んでいますが、perlcairoでREALフォントを使用するために必要です。だから私はそれを機能させることを決心しています(必死です)。これまでのところ、このモジュールを除いて、cpanの使用に問題はありません。実際、Strawberry Perl私が使用した唯一のWindowsPerlは、CPANで箱から出してすぐに機能します。これは明らかに不正なモジュールです。*nixユーザーでさえ問題を抱えています。
PerlのFont::FreeTypeコンパイルエラーを修正するにはどうすればよいですか?を読みました。しかし、そこには助けがないので、新しいスレッドは正当化されると思います。
Number found where operator expected at Makefile.PL line 17, near "my $font_filename = catfile($data_dir, '5"
(Might be a runaway multi-line '' string starting on line 9)
(Do you need to predeclare my?)
Makefile.pl:
1 use ExtUtils::MakeMaker;
2 use File::Spec::Functions;
3
4 WriteMakefile(
5 NAME => 'Font::FreeType',
6 AUTHOR => 'Geoff Richards <qef@laxan.com>',
7 VERSION_FROM => 'lib/Font/FreeType.pm',
8 LIBS => [ '-lfreetype' ],
9 INC => '-I/usr/include/freetype2',
10 NO_META => 1,
11 );
12
13
14 # Generate a listing of the characters in the BDF test font, for checking
15 # that the library can find them all. See t/10metrics_5x7bdf.t
16 my $data_dir = catdir(qw( t data ));
17 my $font_filename = catfile($data_dir, '5x7.bdf');
これはperlを使用して問題なく実行されるので、dmakeの問題は何ですか?perlで実行すると、dmakeが再実行します。そこにあるものだけを使用するようにdmakeを取得する方法がわかりません。また、dmakeに実際のドキュメントはなく、役に立たないヘルプとマニュアルページ(少なくとも私には役に立たない)だけが見つかります。
$ data_dirに末尾のスラッシュを追加しようとしましたが、同じエラーが発生しました。最後に、 $font_filenameを完全なパスに設定しました。原油、私は知っていますが、それは機能します。
したがって、これでFreeType.cが作成されますが、パスの問題が発生します。
gcc -c -I/usr/include/freetype2 -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0.03\" -DXS_VERSION=\"0.03\" "-IC:\Dwimperl\perl\lib\CORE" FreeType.c
FreeType.xs:19:22: fatal error: ft2build.h: No such file or directory
FreeType.cには次のものが含まれます。
#include <ft2build.h>
#include FT_FREETYPE_H
Makefile.plのインクルードパスを変更しようとしましたが、それを行うための「適切な」方法が本当にわかりません。
WriteMakefile(
.
LIBS => '-LC:/gtk/lib -lfreetype',
INC => '-IC:/gtk/include/freetype2 -IC:/gtk/include -IC:/Dwimperl/c/include',
今の問題は、* nixパスをWindowsパスに変換して、コンパイラがすべてのヘッダーファイルを見つけられるようにすることだと思います。誰かがコンパイラを使用してWindowsでこのいまいましいモジュールを正常にコンパイルしましたか?または、少なくともWriteMakefileのWindowsパスを指定する方法を知っている人はいますか?