3
respostas

montagem do makefile usando gcc

por favor, podem orientar de que forma montar o makefile ara compilar um programa em C usando gcc

3 respostas

Você pode adaptar esse exemplo conforme necessário para o seu projeto:

# Nome do programa de saída
TARGET = meu_programa

# Compilador
CC = gcc

# Opções de compilação
CFLAGS = -Wall -Wextra -std=c99

# Diretórios dos arquivos fonte e de saída
SRCDIR = src
OBJDIR = obj
BINDIR = bin

# Lista de arquivos fonte
SOURCES = $(wildcard $(SRCDIR)/*.c)
OBJECTS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))

# Comando padrão para compilar o programa
all: $(BINDIR)/$(TARGET)

# Compilação dos arquivos objeto
$(OBJDIR)/%.o: $(SRCDIR)/%.c
    @mkdir -p $(OBJDIR)
    $(CC) $(CFLAGS) -c $< -o $@

# Linkagem para gerar o executável
$(BINDIR)/$(TARGET): $(OBJECTS)
    @mkdir -p $(BINDIR)
    $(CC) $(CFLAGS) $^ -o $@

# Limpeza dos arquivos intermediários e do executável
clean:
    rm -rf $(OBJDIR) $(BINDIR)

# Regra para reconstruir o projeto
rebuild: clean all

# Define as regras que não correspondem a arquivos
.PHONY: all clean rebuild

Neste exemplo:

  • TARGET é o nome do programa que será gerado.
  • CC é o compilador a ser utilizado (no caso, o GCC).
  • CFLAGS são as opções de compilação (como habilitar warnings, especificar o padrão da linguagem, etc.).
  • SRCDIR, OBJDIR e BINDIR são os diretórios para os arquivos fonte, objetos e binários, respectivamente.
  • SOURCES é uma lista dos arquivos fonte do projeto.
  • OBJECTS é uma lista dos arquivos objeto correspondentes aos arquivos fonte.

As regras all, clean, rebuild e .PHONY são usadas para construir, limpar e reconstruir o projeto.

Você pode personalizar essas variáveis de acordo com a estrutura do seu projeto. Certifique-se de substituir "meu_programa" pelo nome do seu programa.

Crei o arquivo Makefile.cmake da seguinte forma:

Nome do programa de saída

TARGET = meu_programa

Compilador

CC = gcc

Opções de compilação

CFLAGS = -Wall -Wextra -std=c99

Diretórios dos arquivos fonte e de saída

SRCDIR = src OBJDIR = obj BINDIR = bin

Lista de arquivos fonte

SOURCES = $(wildcard $(SRCDIR)/*.c) OBJECTS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))

Comando padrão para compilar o programa

all: $(BINDIR)/$(TARGET)

Compilação dos arquivos objeto

$(OBJDIR)/%.o: $(SRCDIR)/%.c @mkdir -p $(OBJDIR) $(CC) $(CFLAGS) -c $< -o $@

Linkagem para gerar o executável

$(BINDIR)/$(TARGET): $(OBJECTS) @mkdir -p $(BINDIR) $(CC) $(CFLAGS) $^ -o $@

que encontra-se na pasta

Para compilar meu_programa.C devo utilizar make?

Poderia me ajudar-Tentei compilar utilizando nmake e make mas foram devolvidas as seguintes mensagens de erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidade