Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: MakeMaker, h2xs, and writing CPAN modules

by demerphq (Chancellor)
on Jun 24, 2002 at 11:17 UTC ( [id://176740]=note: print w/replies, xml ) Need Help??


in reply to MakeMaker, h2xs, and writing CPAN modules

Hi Perrin,

Ive had similar issues as you are discussing here, and the approach ive come up with to work around them is as follows:

  • set the enviornment variable PERL5LIB to be the root of your "lib development path". So for my machine its set to
    perl5lib=d:\development\perl\devlib
    Now anything in this path is treated as it would be if it were per/lib or perl/site/lib
  • From this directory use h2xs to create a module framework. There is a trick with this however. Once you do
    h2xs -AXC -n Foo::Bar
    Go into the Bar directory and move everything up 1 level. And then lose the Bar directory.
    move *.* .. rd Bar
  • Now to save yourself some pain (IMO) create a subdirectory of Foo called t. move the created test.pl into /t and rename it test.t
And now you need to edit the various files created by h2xs. Dont forget to add the /t directory to the MANIFEST, change the A.U.THOR name, specify your prerequisites in the makfile.pm and add documentation.

Once all of this is done,(assuming i havent forgotten some niggling but important detail) your module should be _both_ useable as normal and usable as per make. Thus once you are happy with the module you should be able to say

nmake nmake test nmake dist
A caveat however: this technique has the problem that you can only be developing 1 module at a time in each path/class heirarchy. Ie you cant work on Foo::Bar and Foo::Baz at the same time (the makefiles and etc would overwrite each other.)

To be honest, normally I develop a module in the devlib _without_ using h2xs first. Then I use h2xs and copy everything but the autogenerated .pm file into the appropriate directory.

As always with advice like this: YMMV

Yves / DeMerphq
---
Writing a good benchmark isnt as easy as it might look.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://176740]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (5)
As of 2024-04-23 20:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found