por favor, podem orientar de que forma montar o makefile ara compilar um programa em C usando gcc
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
por favor, podem orientar de que forma montar o makefile ara compilar um programa em C usando gcc
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:
TARGET = meu_programa
CC = gcc
CFLAGS = -Wall -Wextra -std=c99
SRCDIR = src OBJDIR = obj BINDIR = bin
SOURCES = $(wildcard $(SRCDIR)/*.c) OBJECTS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))
all: $(BINDIR)/$(TARGET)
$(OBJDIR)/%.o: $(SRCDIR)/%.c @mkdir -p $(OBJDIR) $(CC) $(CFLAGS) -c $< -o $@
$(BINDIR)/$(TARGET): $(OBJECTS) @mkdir -p $(BINDIR) $(CC) $(CFLAGS) $^ -o $@
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: