CPAN::MakeMaker - A Shiny Replacement for ExtUtils::MakeMaker


CPAN::MakeMaker - A Shiny Replacement for ExtUtils::MakeMaker


    # Makefile.PL         (Make the Switch!)
    use CPAN::MakeMaker;


So you want to be a CPAN author? CPAN::MakeMaker can help make it easier. This module is a drop-in replacement for ExtUtils::MakeMaker (the module used by almost every existing CPAN distribution). CPAN::MakeMaker works exactly like its legacy counterpart, but it makes a lot of simple things easier, and some harder things possible.



Isn't there a gigantic chicken and egg problem?

In order for this to work, CPAN::MakeMaker would need to be on every installation of Perl in the world. Since ExtUtils::MakeMaker is already out there, aren't we are forced to use it forever?


CPAN::MakeMaker gets around this seemingly impossible barrier with a simple trick. It writes itself directly into your module's distribution directory as ./CPAN/ Since . is always in @INC, the module is always available.


If CPAN::MakeMaker didn't have great features, why would you use it?

NOTE: Features marked XXX have not yet been implemented, but will be soon. In this release, that is almost all of the features. This release is intended for proof of concept, and to start discussion.



The NAME parameter is required by ExtUtils::MakeMaker. If you have a single module in your distribution, CPAN::MakeMaker will use the package name as the default. If CPAN::MakeMaker can't find a default for NAME it will ask you to specify it manually.

SCRIPTS (XXX - not yet implemented)

If you want to distribute scripts as part of your distribution, put them into a directory and use the SCRIPTS keyword to indicate that directory. CPAN::MakeMaker will update your MANIFEST automatically.

    WriteMakefile(SCRIPTS => 'script-dir');


ExtUtils::MakeMaker requires either the VERSION or VERSION_FROM parameter. If you have a single module in your distribution, CPAN::MakeMaker will attempt to parse the VERSION from it. If CPAN::MakeMaker can't find a default for VERSION it will ask you to specify it manually.


ExtUtils::MakeMaker provides you with many useful make targets. A make target is the word you specify after make, like test for make test. Some of the more useful targets are:

CPAN::MakeMaker modifies the behaviour of some of these targets, depending on your requirements. For instance, it adds special rules if you are building an Inline::C module. CPAN::MakeMaker also adds the following targets to your Makefile:


This is the maiden distribution of CPAN::MakeMaker. I would consider it ALPHA status. Since this module simply extends the extremely stable ExtUtils::MakeMaker module, it should mature rapidly.

NOTE: I have already switched over my Inline and YAML modules, and it appears to work flawlessly.

Make the Switch!


    perldoc CPAN::MakeMaker-Philosophy
    perldoc ExtUtils::MakeMaker
    perldoc Module::Build


Brian Ingerson <>


Copyright (c) 2002. Brian Ingerson. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


 CPAN::MakeMaker - A Shiny Replacement for ExtUtils::MakeMaker