Pergunta

Eu estou tentando aprender gnumake para um pequeno projeto que estou trabalhando. Até agora, mesmo os tutoriais "básicos" parece bem difícil e eu ainda tenho que fazer o sentido da sintaxe makefile.

Alguém tem alguns bons recursos para um novato absoluto para se familiarizar com gnumake?

Foi útil?

Solução

O guia definitivo é http://www.gnu.org/software/ fazer / manual / make.html
Não é um livro O'Reilly "Gerenciamento de Projetos com o GNU make", que tem mais explicação. Você também pode utiliza as edições anteriores, eles não cobrem gnumake especificamente, mas são um diluidor do monte.

Make é um segredo sujo entre os desenvolvedores - nenhum de nós compreendê-lo, nós apenas pedir um script make de outra pessoa e mudá-lo. Eu imagino apenas um roteiro já foi escrito a partir do zero (provavelmente pelo criador da ferramenta).

Quando você precisa fazer mais do que o simples exemplo a maioria das pessoas quer mudar para um sistema de construção mais moderna, como Ant ou rolar seus próprios em Perl / Python / etc.

Outras dicas

As características mais comumente usado da marca pode ser dividido em conceitos a par simples, metas, dependências e variáveis.

Os alvos são as coisas que você quer construir, mas o comando (s) abaixo de um alvo pode ser comandos do compilador ou scripts. Geralmente cada alvo refere-se a um módulo no seu código, mas você pode fazer estes como granular como você quer para se adequar ao seu projeto.

As dependências são arquivos ou outros alvos em seu projeto. O melhor exemplo disso é para um projeto C onde você está construindo um binário a partir de um monte de arquivos de objeto. Cada arquivo objeto terá de existir antes de você pode construir o binário, então make irá percorrer seus alvos até que todas as dependências foram concluídos, e em seguida, executar o comando para o objectivo global.

As variáveis ??nem sempre são necessárias, mas são muito útil para lidar com as coisas como bandeiras do compilador. Os exemplos canônicos são CC e CCFLAGs que irá se referir ao compilador o seu uso ou seja, gcc e as bandeiras como -ANSI -Wall -O2.

Um casal dicas mais gerais e truques:

  • Comandos deve ser precedido por um personagem [guia], ou eles não serão executados, esta é apenas uma velha relíquia da marca, não me lembro o porquê disso.
  • Por convenção, você pode querer incluir um tudo-alvo para especificar o padrão que alvo deve ser o padrão. Isto é útil quando você tem um makefile complexo e há um alvo em particular que você sempre quer ser o padrão.
  • O seu makefile deve ser chamado makefile ou Makefile, mas se você quiser chamá-lo outra coisa, use $ make -f [makefilename]
  • Use sempre a plena expansão variável sintaxe ou seja, $ (variável) ou fazer pode não sair os comandos que deseja.
  • Faça podem trabalhar de forma recursiva, por isso, se você tem um monte de sub-módulos em seu projeto que dentro vivo de diretórios, você pode chamar make no makefile sub-diretório de dentro make para construir cada um.
  • Se você tem um projeto muito complicado que precisa de um scripts de instalação, etc. você provavelmente também quer investigar autotools que gera o makefile para você e faz um monte de truques para verificar a existência de biblioteca e para outros problemas de portabilidade.

"Gerenciamento de Projetos com o GNU make, 3ª edição" é colocado sob "GNU Free Documentation License" e pode ser legalmente ler online gratuitamente: link .

Concordo com a sugestão de livro O'Reilly.

Para algumas dicas úteis, truques e insights sobre olhar olho no Sr. . artigos façam

mgb: É ainda pior que isso. uma vez eu escrevi um sistema make complicado a partir do zero (alguns milhares de arquivos, cinquenta ou cem diretórios, quatro ou cinco compiladores e alvos de compilação cruzada, 2 OS de, etc.). Sentei-me e aprendi GNU make dentro e por fora, primeiro fora, projetou o sistema, brinquei com um primeiro protótipo. Estávamos todos muito felizes com o resultado.

Mas isso foi há anos. Você sabe como eu escrevê-los hoje? Mesma maneira que você descreve. É apenas complicadas o suficiente e os detalhes de sintaxe são suficientes obscura do que a menos que você fazê-lo com bastante regularidade você não pode se lembrar dos detalhes. Assim como qualquer outro idioma com a sintaxe não-intuitivo e algumas regras peculiares, eu acho.

Eu não sou grande fã de GNU sistema de informação, mas eu encontrei as informações make GNU páginas para ser muito útil. Depois de conhecer os conceitos básicos e mais ou menos o tipo de coisas que estão disponíveis, eu descobri que as páginas de informações são a maneira mais rápida para se referir a informação como funções pré-construídos, por exemplo.

(Esqueça o programa info GNU, e usar por exemplo pinfo .)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top