O programa em C, utilizando o makefile abaixo:
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
No Windows, e roda perfeitamente:
porém Na VM Linux, o mesmo programa utiilizando o mesmo makefile apresenta a mensagem, conforme abaixo: