从字面上看,现在几天来,我一直在网上搜索,诅咒和撕扯我的头发,尝试使用dmake为dwimperl-5.14.2.1-v7-32bit (Strawberry Perl 5.14.2.1)编译Font::FreeType 。对于开瓶器, FreeType.xs文件中有几个错误,我在错误 #32713 for Font-FreeType: patch for Font-FreeType-0.03中找到了一个补丁。迷人的。这个模块的最后一次更新是 2004 年 9 月 11 日(注意这一天),所以它肯定已经死了,但我需要它来使用带有 perlcairo 的 REAL 字体。所以我决心(不顾一切地)让它发挥作用。到目前为止,除了这个模块之外,我在使用 cpan 时没有遇到任何问题。事实上草莓 Perl是我使用过的唯一一个可以直接与 CPAN 一起使用的 Windows perl。这显然是一个流氓模块。甚至 *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?)
生成文件.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 路径吗?