"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Compreendendo o Makefile (exemplo com linguagem C).

Compreendendo o Makefile (exemplo com linguagem C).

Publicado em 31/07/2024
Navegar:844

Comprendre le Makefile (Exemple avec langage C).

Um Makefile é um arquivo usado pela ferramenta make para automatizar a compilação de programas. Aqui estão as regras padrão e as melhores práticas para escrever um Makefile eficaz:

Estrutura Básica de um Makefile

  1. Target: O que você deseja construir (por exemplo, um arquivo executável).
  2. Pré-requisitos: Os arquivos necessários para construir o destino (por exemplo, arquivos de origem).
  3. Regra: O comando a ser executado para criar o destino.

Exemplo simples

target: prerequisites
    command

Regras Padrão

  1. Regra padrão: O primeiro alvo no Makefile é aquele que será construído por padrão.

  2. Compilando arquivos de origem:

    • Use variáveis ​​para compiladores e opções.
    • Exemplo :
   CC = gcc
   CFLAGS = -Wall -g
   SOURCES = main.c utils.c
   OBJECTS = $(SOURCES:.c=.o)
   TARGET = mon_programme

   $(TARGET): $(OBJECTS)
       $(CC) -o $@ $^

   %.o: %.c
       $(CC) $(CFLAGS) -c $



  1. Phonies: Usa .PHONY para alvos que não são arquivos.
   .PHONY: clean
   clean:
       rm -f $(OBJECTS) $(TARGET)
  1. Variáveis: Utiliza variáveis ​​para simplificar o gerenciamento de caminhos e opções.
   CC = gcc
   CFLAGS = -Wall
  1. Gerenciamento de dependências: usa regras e padrões implícitos para reduzir a repetição.

  2. Dependências automáticas: você pode gerar dependências automaticamente para arquivos .o.

   -include $(OBJECTS:.o=.d)

Exemplo completo

Aqui está um exemplo completo do Makefile:

# Variables
CC = gcc
CFLAGS = -Wall -g
SOURCES = main.c utils.c
OBJECTS = $(SOURCES:.c=.o)
TARGET = mon_programme

# Règle par défaut
all: $(TARGET)

# Lien de l'exécutable
# $@ -> $(TARGET)
# $^ -> $(OBJECTS)
$(TARGET): $(OBJECTS)
    $(CC) -o $@ $^

# Compilation des fichiers .c en .o
# $ Premier element des pr
%.o: %.c
    $(CC) $(CFLAGS) -c $



Boas práticas

  1. Recuo com tabulações: os comandos nas regras devem ser recuados com tabulações, não com espaços.

  2. Código de comentário: usa comentários para explicar seções do Makefile.

  3. Arquivos de grupo: se seu projeto contiver vários arquivos, organize-os em subdiretórios e use variáveis ​​para gerenciar os caminhos.

  4. Use regras implícitas: aproveite as regras integradas do make para evitar reescrever regras comuns.

Por que usar .PHONY?

  • Evite conflitos: Se existir um arquivo com o mesmo nome de um alvo, make pensará que o alvo está atualizado e não executará comandos associados. .PHONY evita isso.

  • Melhorias de desempenho: Alvos falsos são sempre considerados "tarefas pendentes", o que pode melhorar a velocidade de execução dos comandos associados.

Por que usar %.o:%c para compilação?

  • Eficiência: usar %.o:%c permite que você se beneficie da otimização make para recompilar apenas o que for necessário.

  • Prático: para projetos maiores, %.o:%c é muito mais adequado.

Conclusão

Um Makefile bem estruturado facilita o gerenciamento de projetos e evita erros de compilação. Seguindo essas regras e práticas recomendadas, você pode criar um Makefile eficiente e de fácil manutenção.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/ashcript/comprendre-le-makefile-exemple-avec-le-langage-c-47n9 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3