Win32::Daemonを自分でビルドしようとしています。私が CPAN を使用しない理由は、Perl モジュールの動作をより深く掘り下げたいからです。最後に、これが機能することを確認することで、別の問題の解決策を見つけたいと思っています (ここでは重要ではありません)。
モジュールをビルドするための 3 つのオプションが表示されます: cygwin、mingw、microsoft コンパイラ (cl)
MinGW では、サポートされていないことが報告されます (Makefile.PL の場合は単純です)。MinGW に一致するようにチェックを変更すると、より多くのエラーに展開されますtchar.h
。それを持っている)。
しかし、とにかく私の本当の目標は、MSコンパイラでビルドすることです.
だから今ここに私の実行からの私のnmake出力がありますname /f Makefile
:
NMAKE : fatal error U1073: "C:/Program" could not be created.
Stop.
エラーメッセージをドイツ語から大雑把に翻訳しましたが、ステートメントは簡単です。ここに表示されるのは、パスの問題 (おそらくスペース) のようです。スラッシュにも気付きます。はスクリプトMakefile
によって作成されましたMakefile.PL
(私は Active Perl v5.12.1 を使用しています):
use strict;
use warnings;
use Config qw(%Config);
use ExtUtils::MakeMaker;
unless ($^O eq "MSWin32" || $^O eq "cygwin") {
die "OS unsupported\n";
}
require Win32;
my %param = (
NAME => 'Win32::Daemon',
VERSION_FROM => 'Daemon.pm',
DEFINE => '-DPERL_NO_GET_CONTEXT',
OBJECT => 'CCallbackList$(OBJ_EXT) CCallbackTimer$(OBJ_EXT) Constant$(OBJ_EXT) CWinStation$(OBJ_EXT) Daemon$(OBJ_EXT) ServiceThread$(OBJ_EXT)',
XS => { 'Daemon.xs' => 'Daemon.cpp' },
);
$param{INC} .= ' -EHsc' if $Config{'cc'} =~ /^cl/i;
$param{NO_META} = 1 if eval "$ExtUtils::MakeMaker::VERSION" >= 6.10_03;
WriteMakefile(%param);
sub MY::xs_c {
'
.xs.cpp:
$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.cpp
';
}
私は MakeMaker についてあまり知りませんが、私が修正できるものは何も見当たりませんMakefile
。引用など、いくつか試しましたが、何も役に立ちませんでした。
問題は、私は Windows でビルドするときにこのような問題に慣れていますが、通常、これは Unix 用に作成されたツールに関するものです。これは明示的にWindowsのみであるため、そのまま使用できると思います。だから私は何か間違ったことをしていると思います。
解決策を見つける場所について何か助けはありますか? 前もって感謝します。
編集/追加: Active Perl 5.16.x を搭載した別の Win7 マシンでこれを試したところ、魅力的に機能しました。このマシンからの別の出力と、実行中に失敗した現在の出力を調べたところperl Makefile.PL
、次の出力が表示されました。
... Detected uninstalled Perl. Trying to continue.
Unable to find a perl 5 (by these names: C:\Program Files\Perl64\bin\perl.exe perl.exe perl5.exe perl5.12.1.exe miniperl.exe, in these dirs: . [...] C:\Program Files\Perl64\site\bin C:\Program Files\Perl64\bin [...])
Have \progra~1\perl64\lib
Want \temp\perl---please-run-the-install-script---\lib
Writing Makefile for Win32::Daemon
出力を切り捨てました。誰か説明してください: perl Makefile.PL
orを実行できるperl -v
のに、Perl が置かれている正確なディレクトリに Perl が見つからないのはなぜですか? 再インストールしましたがダメでした…