A ideia geral por trás de AM_MAINTAINER_MODE
é de duas maneiras de trabalhar com projetos: um em que o usuário “apenas” deseja construir e instalar o projeto (consumindo um artefato baseado na origem para instalação) e talvez fazer alterações no projeto. o código do projeto sem tocar em seu sistema de compilação e o outro em que o usuário deseja que qualquer alteração feita em qualquer lugar do projeto seja refletida na saída de compilação.
Assim, quando AM_MAINTAINER_MODE
está desativado, arquivos como configure
, Makefile.in
etc. não são recriados, mesmo se o arquivo de origem correspondente ( configure.ac
, Makefile.am
etc.) for alterado. A suposta vantagem disso é que ela evita que os usuários tenham as ferramentas de criação necessárias e evita ter que lidar com as alterações nas próprias ferramentas (pergunte a qualquer um que tenha tentado reconstruir um projeto antigo e complexo usando as ferramentas automáticas atuais). A desvantagem é que as alterações feitas em determinados arquivos são ignoradas, portanto, os usuários precisam garantir que todos os arquivos apropriados sejam atualizados manualmente ... (Esse é um dos motivos pelos quais muitos patches que você vê na Internet incluem alterações em Makefile.am
< em> e Makefile.in
e às vezes até Makefile
.)
A vantagem de ativar AM_MAINTAINER_MODE
é que todas as alterações feitas nos arquivos são levadas em consideração. A desvantagem é que o usuário precisa saber quais são os arquivos de origem reais: se você fizer uma mudança para Makefile.in
e reconstruir com o mantenedor, poderá perder suas mudanças!
O consenso geral parece ser que a reconstrução a partir da fonte real é melhor, e esse modo de manutenção não é uma boa ideia. ( A FAQ do automake fornece referências.) Isso não significa que todos os usuários precisam de repente ter todas as ferramentas necessárias para reconstruir tudo ; Se um projeto enviar os arquivos gerados em seus artefatos de release, desde que os timestamps sejam bons, os usuários não precisarão reconstruí-los.