-1

文字通り何日もの間、私は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パスを指定する方法を知っている人はいますか?

4

1 に答える 1

1

私はまた、次のようにcpanを使用してcygwinにインストールする最新のFreeTypeモジュールを取得しようとしていました。

$ cpan

cpan shell -- CPAN exploration and modules installation (v1.9800)
Enter 'h' for help.

cpan[1]> install Font::FreeType

私が最初に遭遇した問題は、メイク段階でした。Makeはft2build.hが見つからないと不平を言っていました。

そのとき、最初にFreeTypeライブラリをダウンロードしてコンパイル/インストールする必要があることに気づきました(doh!)。そこで、FreeTypeダウンロードページから最新のものをダウンロードし、次のようにインストールしました。

$ cd cygwin/freetype-2.4.0
$ ./configure
...
$ make
...
$ make install

次の問題は、cpanでモジュールを再度作成しようとすると、ft2build.hの次の行で失敗していたことです。

#include <freetype/config/ftheader.h>

実際のファイル(私のシステムでは/usr/local/include/ft2build.hにありますが、他の場所にある可能性があります)を見ると、その行の前に次のコメントが表示されます。

/* `<prefix>/include/freetype2' must be in your current inclusion path */

そこで、適切な環境変数を設定します(「適切な」方法だと思いますが、makeファイルの「INC」行を変更するよりも優れています)。

$ C_INCLUDE_PATH=/usr/local/include/freetype2
$ export C_INCLUDE_PATH

それを修正した後、私が遭遇した次の問題は左辺値エラーです:

$ cpan install Font::FreeType
CPAN: Storable loaded ok (v2.27)
...
FreeType.xs:808:21: error: lvalue required as left operand of assignment
...
Makefile:340: recipe for target `FreeType.o' failed
make: *** [FreeType.o] Error 1
  GEOFFR/Font-FreeType-0.03.tar.gz
  /usr/bin/make -- NOT OK
CPAN: YAML loaded ok (v0.84)
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible

あなたがすでにそれを修正したことは知っていますが、誰かがそれに遭遇した場合に備えて、ここに情報を投稿します。ここからパッチファイルをFreeType.xs.diffに保存し(Font-FreeType-0.03ディレクトリの名前が異なる場合があります)、それを適用して、以下のように作成/コンパイルします。モジュールを変更したため、cpanを使用できなくなったため、手動で作成していることに注意してください。

$ cd ~/.cpan/build/Font-FreeType-0.03
$ patch FreeType.xs FreeType.xs.diff
patching file FreeType.xs

$ make
Makefile out-of-date with respect to Makefile.PL
...
==> Your Makefile has been rebuilt. <==
==> Please rerun the make command.  <==
false
Makefile:866: recipe for target `Makefile' failed
make: *** [Makefile] Error 1

$ make
cp lib/Font/FreeType.pm blib/lib/Font/FreeType.pm
...
Manifying blib/man3/Font.FreeType.3pm

$ make install
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
...
Appending installation info to /usr/lib/perl5/5.14/i686-cygwin-threads-64int/perllocal.pod

出来上がり!コンパイルされました!もう1つ指摘すべきことは、ボロディンが以前に指摘したように、私はdmakeではなく通常のgnumakeを使用したことです。FreeTypeのインストールノートには、GNUMake3.80以降を実行する必要があると記載されています。次のように、インストールしたmakeのバージョンを確認できます。

$ make -v
GNU Make 3.82.90
Built for i686-pc-cygwin
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
于 2013-02-08T07:05:53.433 に答える