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
