2008-12-15 30 views

Respuesta

5

El bolo alimenticio ya que han masticado un poco en esto antes en "Which framework should I use to write modules?"

Después de escupir el bolo alimenticio que decidí ir con Module::Build pero claramente diferentes respuestas son posibles! (Aunque he sido feliz con M :: B hasta ahora).

+0

gracias, fue interesante –

+0

no es la respuesta más grande, pero se relaciona con exactamente lo que quería –

5

Bueno, Module::Build es un módulo bastante bueno, se supone que es un reemplazo de ExtUtils::MakeMaker, es decir, reemplaza el Makefile.PL por un Build.PL, que genera una compilación en lugar de un archivo Makefile. También se entiende como "las cosas simples deberían ser simples, las cosas difíciles deberían ser posibles".

Module::Install toma un enfoque diferente y genera un archivo Makefile.

Además, no hay que olvidar que no todo el mundo se ejecuta la versión más reciente de todo :-)

No recuerdo ninguna comparación de los módulos, pero creo que se podría encontrar algunas cosas de Module::Build y Module::Install respectivas páginas de copias.

+0

gracias, creo que MB funciona sin hacer las uñas por mí –

6

Utilizamos Module::Build en nuestro grupo.

La razón principal es Easy Extensibility.

Module :: Build le permite hacer más con su proceso de construcción en Perl pura a través de subclases. Si desea hacer más usando Module::Install, debe tener conocimiento de cómo funcionan los Makefiles, AFAIK. Como presumiblemente ya conoces a Perl, esto puede ser una ventaja.

Como dijo, el uso de Module :: Build elimina la dependencia de un programa externo make, que puede verse como algo bueno.

Sin embargo, los principales inconvenientes que se me ocurren son:

  • Aunque módulo :: Build ha golpeado núcleo, no todo el mundo va a utilizar una versión actualizada de Perl. Para usuarios con versiones anteriores del núcleo, creará una nueva dependencia.
  • Muchos veteranos (no necesariamente personas de Perl) están acostumbrados al paradigma perl Makemaker.PL; make; make install, y en su lugar pueden ser expulsados ​​teniendo Build.PL. Espero que esto no sea un gran problema.
  • Module :: Build ocasionalmente ha roto nuestras compilaciones cuando su funcionalidad ha cambiado porque la documentación no cubría un caso extremo que estábamos usando. El borde de la caja se modificó y documentó, pero tuvimos que volver a codificar nuestra subclase para que nuestra construcción funcione nuevamente (esto nos sucedió en la actualización reciente de 0.2808 a 0.3).

Todo lo dicho, sin embargo, todavía recomiendo Module :: Build simplemente por la extensibilidad. Si eso no es un problema para usted, es mejor que se quede con Module :: Install.