in reply to Re^6: Installing Perl modules on Win64/Perl 5.8
in thread Installing Perl modules on Win64/Perl 5.8

I was able to locate the SDK from another download site and ran the setenv command suggested by Rob. Is this all that is needed to get up and running with building Perl modules? When I ran "perl MakeFile.PL" for the first time it complained I didn't have a C compiler on my path.
  • Comment on Re^7: Installing Perl modules on Win64/Perl 5.8

Replies are listed 'Best First'.
Re^8: Installing Perl modules on Win64/Perl 5.8
by syphilis (Archbishop) on Mar 29, 2010 at 10:41 UTC
    Is this all that is needed to get up and running with building Perl modules?

    Should be all that's needed. You might want to take a look at what changes the running of that command makes to the path.

    I installed the compiler into C:\_64\Platform_SDK. I therefore have to run:
    C:\_64\Platform_SDK\SetEnv.cmd /XP64 /RETAIL
    If you've installed into a directory that contains spaces you may need to double-quote the path:
    "C:\path with spaces\SetEnv.cmd" /XP64 /RETAIL
    That prepends the following 3 directories to my path:
    C:\_64\Platform_SDK\Bin\Win64\x86\AMD64 C:\_64\Platform_SDK\Bin C:\_64\Platform_SDK\Bin\WinNT
    It's the first of those directories that houses the compiler (cl.exe). If it's the same for you, and the Makefile.PL can't find the compiler, then one suspects a Makefile.PL bug. Which module (and version number of that module) is it that produces this error ?

    Math-FFT-1.28 is a nice, easy extension to build just to check that everything is as it should be. Here's what I get for it:
    C:\_64\comp\Math-FFT-1.28>perl Makefile.PL Checking if your kit is complete... Looks good Writing Makefile for Math::FFT C:\_64\comp\Math-FFT-1.28>nmake test Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. cp FFT.pm blib\lib\Math\FFT.pm C:\_64\perl1007\bin\perl.exe C:\_64\perl1007\lib\ExtUtils\xsub +pp -typem ap C:\_64\perl1007\lib\ExtUtils\typemap -typemap typemap FFT.xs > FFT +.xsc && C: \_64\perl1007\bin\perl.exe -MExtUtils::Command -e "mv" -- FFT.xsc FFT. +c cl -c -nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:pr +ecise -DWI N32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIVE -D +USE_SITECU STOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_ +SYS -DUSE_ PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:precis +e -DVER SION=\"1.28\" -DXS_VERSION=\"1.28\" "-IC:\_64\perl1007\lib\CORE" F +FT.c FFT.c cl -c -nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:pr +ecise -DWI N32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIVE -D +USE_SITECU STOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_ +SYS -DUSE_ PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:precis +e -DVER SION=\"1.28\" -DXS_VERSION=\"1.28\" "-IC:\_64\perl1007\lib\CORE" f +ft4g.c fft4g.c cl -c -nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:pr +ecise -DWI N32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIVE -D +USE_SITECU STOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_ +SYS -DUSE_ PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:precis +e -DVER SION=\"1.28\" -DXS_VERSION=\"1.28\" "-IC:\_64\perl1007\lib\CORE" a +rrays.c arrays.c Running Mkbootstrap for Math::FFT () C:\_64\perl1007\bin\perl.exe -MExtUtils::Command -e "chmod" -- + 644 FFT.b s C:\_64\perl1007\bin\perl.exe -MExtUtils::Mksymlists -e "Mksym +lists('NAM E'=>\"Math::FFT\", 'DLBASE' => 'FFT', 'DL_FUNCS' => { }, 'FUNCLIST' = +> [], 'IMP ORTS' => { }, 'DL_VARS' => []);" link -out:blib\arch\auto\Math\FFT\FFT.dll -dll -nologo -nodefa +ultlib -de bug -opt:ref,icf -ltcg -libpath:"C:\_64\perl1007\lib\CORE" -machine: +AMD64 FFT. obj fft4g.obj arrays.obj C:\_64\perl1007\lib\CORE\perl510.lib oldnam +es.lib ker nel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib + shell32.l ib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib wi +nmm.lib v ersion.lib odbc32.lib odbccp32.lib comctl32.lib bufferoverflowU.lib ms +vcrt.lib - def:FFT.def Creating library blib\arch\auto\Math\FFT\FFT.lib and object blib\ar +ch\auto\Ma th\FFT\FFT.exp Generating code c:\_64\comp\math-fft-1.28\arrays.c(363) : warning C4715: 'pack2D' : no +t all cont rol paths return a value c:\_64\comp\math-fft-1.28\arrays.c(200) : warning C4715: 'pack1D' : no +t all cont rol paths return a value Finished generating code if exist blib\arch\auto\Math\FFT\FFT.dll.manifest mt -nologo - +manifest b lib\arch\auto\Math\FFT\FFT.dll.manifest -outputresource:blib\arch\auto +\Math\FFT\ FFT.dll;2 if exist blib\arch\auto\Math\FFT\FFT.dll.manifest del blib\arc +h\auto\Mat h\FFT\FFT.dll.manifest C:\_64\perl1007\bin\perl.exe -MExtUtils::Command -e "chmod" -- + 755 blib\ arch\auto\Math\FFT\FFT.dll C:\_64\perl1007\bin\perl.exe -MExtUtils::Command -e "cp" -- FF +T.bs blib\ arch\auto\Math\FFT\FFT.bs C:\_64\perl1007\bin\perl.exe -MExtUtils::Command -e "chmod" -- + 644 blib\ arch\auto\Math\FFT\FFT.bs C:\_64\perl1007\bin\perl.exe "-MExtUtils::Command::MM" "-e" "t +est_harnes s(0, 'blib\lib', 'blib\arch')" t/*.t t/apps.t ... ok t/fft.t .... ok t/stats.t .. ok All tests successful. Files=3, Tests=48, 2 wallclock secs ( 0.14 usr + 0.11 sys = 0.25 CP +U) Result: PASS
    Cheers,
    Rob
      I am assuming that the setenv command has executed correctly because I get the output "Targeting Windows XP X64 RETAIL" but there's a catch: The path is not getting updated. I don't know if it is enough to update it manually but this didn't seem to help.
        Targeting Windows XP X64 RETAIL

        That looks right. It comes from this section of setenv.cmd:
        Echo Targeting Windows XP X64 %DEBUGMSG% Echo. Set Lib=%MSSdk%\Lib\AMD64;%MSSdk%\Lib\AMD64\atlmfc; Set Include=%MSSdk%\Include;%MSSdk%\Include\crt;%MSSdk%\Include\crt\sy +s;%MSSdk%\Include\mfc;%MSSdk%\Include\atl Set Path=%MSSdk%\Bin\Win64\x86\AMD64;%MSSdk%\Bin;%MSSdk%\Bin\WinNT;%pa +th% Set APPVER=5.02 Set TARGETOS=WINNT Title Microsoft Platform SDK XP X64-bit IE 6.0 %DEBUGMSG% Build Enviro +nment Goto Finish
        As you can see, there's more to it than setting just the path - it also sets the Lib and Include environment variables appropriately.
        What does the corresponding section of your setenv.cmd contain ?
        Is %MSSdk% being set correctly ? It should be the location you installed to. (For me it's C:\_64\Platform_SDK) Just put an "Echo" in front of the "Set Lib ..." command, and you'll see what %MSSdk% is set to when you run setenv.cmd. What does it produce ? Does it match an existing directory ?
        Could you put a copy of your setenv.cmd on your scratchpad - or even post it here ?
        As it stands, we've really very little to work with.

        Cheers,
        Rob
Re^8: Installing Perl modules on Win64/Perl 5.8
by BrowserUk (Patriarch) on Mar 29, 2010 at 11:29 UTC
    When I ran "perl MakeFile.PL" for the first time it complained I didn't have a C compiler on my path.

    Could you give the exact error message you get. I suspect that this may be due to a broken test in EU::MM that looks for an executable named 'cl' rather than 'cl.exe'.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.