makefile
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
makefile [2016/09/01 19:44] – jeferson | makefile [2016/09/01 20:02] (current) – [Opção 3] jeferson | ||
---|---|---|---|
Line 28: | Line 28: | ||
==== Opção 1 ==== | ==== Opção 1 ==== | ||
- | O arquivo Makefile mais simples de ser escrito consiste em agrupar os comandos necessários da seguinte forma: | + | O arquivo |
< | < | ||
compile: | compile: | ||
- | |||
ifort main.f part1.f part2.f -o exec | ifort main.f part1.f part2.f -o exec | ||
run: | run: | ||
- | |||
| | ||
clear: | clear: | ||
- | |||
rm -f *.o *.mod exec | rm -f *.o *.mod exec | ||
</ | </ | ||
- | Com este arquivo, basta digitar " | + | Com este arquivo, basta digitar "<font inherit/ |
==== Opção 2 ==== | ==== Opção 2 ==== | ||
- | Nesta opção, serão criados os arquivos do tipo " | + | Nesta opção, serão criados os arquivos do tipo " |
+ | < | ||
COMPILADOR = ifort | COMPILADOR = ifort | ||
Line 55: | Line 54: | ||
exec: main.o part1.o part2.o | exec: main.o part1.o part2.o | ||
- | + | $(COMPILADOR) main.o part1.o part2.o -o exec | |
- | $(COMPILADOR) main.o part1.o part2.o -o exec | + | |
part1.o: part1.f | part1.o: part1.f | ||
- | + | $(COMPILADOR) -c part1.f | |
- | $(COMPILADOR) -c part1.f | + | |
part2.o: part2.f | part2.o: part2.f | ||
- | + | $(COMPILADOR) -c part2.f | |
- | $(COMPILADOR) -c part2.f | + | |
main.o: main.f part1.o part2.o | main.o: main.f part1.o part2.o | ||
- | + | $(COMPILADOR) -c main.f part1.o part2.o | |
- | $(COMPILADOR) -c main.f part1.o part2.o | + | |
run: | run: | ||
- | + | ./exec | |
- | ./exec | + | |
clear: | clear: | ||
+ | rm -f *.o *.mod exec | ||
+ | </ | ||
+ | |||
+ | Apesar de ser uma forma mais rebuscada do que a opção 1, nesta opção é necessário que se conheçam as dependências entre cada subprograma, | ||
+ | |||
+ | |||
+ | ==== Opção 3 ==== | ||
+ | |||
+ | Esta opção, apesar de mais abstrata, é a que traz mais generalidade ao Makefile. Para o exemplo aqui apresentado, | ||
+ | |||
+ | < | ||
+ | COMPILADOR = ifort -O2 | ||
+ | |||
+ | FSOURCES = $(wildcard *.f) | ||
+ | |||
+ | compile: | ||
+ | exec: $(FSOURCES: | ||
+ | | ||
+ | |||
+ | global_var.o: | ||
+ | | ||
+ | |||
+ | %.o: %.f global_var.o | ||
+ | | ||
+ | |||
+ | clean: | ||
+ | @rm -f *.o *.mod exec | ||
+ | run: | ||
+ | @./exec | ||
+ | </ | ||
+ | |||
+ | Neste arquivo, o @ no início de cada comando faz com que este não seja impresso na tela. O comando " | ||
- | rm -f *.o *.mod exec | + | Em seguida, a variável especial " |
makefile.1472759088.txt.gz · Last modified: by jeferson