Automatizando a compilação
O processo de compilação pode ser automatizando quando utilizamos um makefile. O arquivo makefile é um arquivo utilizado por um programa chamado make. Considere que você precise compilar vários arquivos para obter um arquivo executável digitando o seguinte comando:
g++ main.cpp hello.cpp factorial.cpp -o hello
Você poderia fazer um makefile da seguinte maneira:
all:
g++ main.cpp hello.cpp factorial.cpp -o hello
Para compilar agora, você precisaria apenas digitar
make all
Usando dependência
Às vezes é útil definir o uso de diferentes alvos para a compilação. Se você modificar um único arquivo em seu projeto não implicará recompilação de todo o projeto,mas apenas o que foi modificado.
alvo: dependência
Arquivo makefile com dependência
all: hello
hello: main.o factorial.o hello.o
g++ main.o factorial.o hello.o -o hello
main.o: main.cpp
g++ -c main.cpp
factorial.o: factorial.cpp
g++ -c factorial.cpp
hello.o: hello.cpp
g++ -c hello.cpp
clean:
rm -rf *o hello
make all: compila projeto
make clean: remove todos os arquivos-objetos e o executável forçando uma nova compilação.
Usando variáveis e comentários
#Comentário do arquivo makefile
#compilador que será utilizado
CC = g++
#opções de compilação que serão utilizadas
#-Wall = Mostra todos os warnings
CFLAGS = -c –Wall
all: hello
hello: main.o factorial.o hello.o
$(CC) main.o factorial.o hello.o -o hello
main.o: main.cpp
$(CC) $(CFLAGS) main.cpp
factorial.o: factorial.cpp
$(CC) $(CFLAGS) factorial.cpp
hello.o: hello.cpp
$(CC) $(CFLAGS) hello.cpp
clean:
rm -rf *o hello
Usando alguns coringas
$@ = o alvo
$< = a dependência
#Comentário do arquivo makefile
#compilador que será utilizado
CC = g++
#opções de compilação que serão utilizadas
#-Wall = Mostra todos os warnings
CFLAGS = -c –Wall
OBJECTS = main.o factorial.o hello.o
all: hello
hello: $(OBJECTS)
$(CC) $(OBJECTS) -o $@
%.o : %.c
$(CC) $(CFLAGS) -c $<
clean:
rm -rf *o hello
Nenhum comentário:
Postar um comentário