Bom. faz um bom tempo que não posto algo no Blog pois estive meio ocupado com alguns projetos, provas e trabalhos, pois cá estou para ensinar uma coisa que pode te salvar vidas com a parte mais chata de um programa. sua transformação de código-fonte para código de maquina.
A Maioria deve estar acostumado em clicar no botão “Build” e depois “Run” e Voilà! seu programa rodando bonitinho.
mas no Linux 90% dos aplicativos para compilar terá o uso do Makefile, alguns usam CMake que seria uma alternativa ao Make.
Temos esses 3 Arquivos de codigo-fonte em C.
onefile.c
subtracao.h
subtracao.c
precisamos fazer um build na ordem onde onefile.c contem o main()
CC=cc CFLAGS=-Wall -O2 BIN_NAME =onefile SRC=$(wildcard *.c) OBJ=$(SRC:%.c=%.o) all: $(BIN_NAME) $(BIN_NAME): $(OBJ) $(CC) $(CFLAGS) $^ -o $@ %.c.o: $(SRC) $(CC) -c $^ clean: @rm -rf *.o
no começo pode parecer confuso mas vamos por parte o que significa cada coisa
CC=cc cria uma variável para o compilador, não é 100% necessário mas facilita caso precise trocar de compilador pois afeta o script todo
CFLAGS=-Wall -O2 – parâmetros passados para o compilador -Wall apenas mostra todos os warnings, e -O2 é so uma otimizacao na compilação
BIN_NAME =onefile nome do arquivo binário final
SRC=$(wildcard *.c) – lista todos codigos fontes .c na pasta
OBJ=$(SRC:%.c=%.o) – associa todos arquivos codigo-fonte .c mas com extensão .o
%.c.o: $(SRC) $(CC) -c $^
este pedaço de codigo automatiza a compilação transformando todo pedaço de codigo em C para arquivo de objeto para ser linkado mais tarde
$(BIN_NAME): $(OBJ) $(CC) $(CFLAGS) $^ -o $@
este pedaço do script pega todos arquivos objetos e linka transformando em um arquivo binário executável
ou ELF
all: $(BIN_NAME)
all e um comando padrão do make para quando a pessoa digita make no bash all é o primeiro a ser chamado
com $(BIN_NAME) invoca o script acima compilando os objetos que acaba invocando o outro pedaço do script para compilar os pedaços de codigos
não importando quantos codigos fontes tem na pasta ele lista e compila automaticamente
Para quem quiser experimentar. baixe : Arquivo para Download
basta extrair e digitar make e ver a ” mágica” acontecer
