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:49] – [Opção 2] jeferson | makefile [2016/09/01 20:02] (current) – [Opção 3] jeferson |
|---|
| ==== Opção 3 ==== | ==== Opção 3 ==== |
| |
| Nesta opção, se | Esta opção, apesar de mais abstrata, é a que traz mais generalidade ao Makefile. Para o exemplo aqui apresentado, inclui-se o arquivo global_var.f, que contém a declaração das variáveis em um módulo e que deve ser compilado antes dos demais arquivos. Neste caso, o arquivo Makefile deve ser da seguinte forma: |
| | |
| | <code> |
| | COMPILADOR = ifort -O2 |
| | |
| | FSOURCES = $(wildcard *.f) |
| | |
| | compile:exec |
| | exec: $(FSOURCES:.f=.o) |
| | @$(COMPILADOR) -o $@ $^ |
| | |
| | global_var.o: global_var.f |
| | @$(COMPILADOR) -c global_var.f |
| | |
| | %.o: %.f global_var.o |
| | @$(COMPILADOR) -c $<-o $@ |
| | |
| | clean: |
| | @rm -f *.o *.mod exec |
| | run: |
| | @./exec |
| | </code> |
| | |
| | Neste arquivo, o @ no início de cada comando faz com que este não seja impresso na tela. O comando "FSOURCES = $(wildcard *.f)" faz com que todos os arquivos com extensão ".f" sejam compilados. |
| | |
| | Em seguida, a variável especial "$^" é incluída e realiza a substituição de todas as dependências de cada um dos arquivos compilados. Com o comando "%.o", o arquivo entende que todos os arquivos ".f" devem ser compilados para a extensão ".o" (atentar para a criação da dependência entre os demais arquivos ".f" com "global_var.f" neste comando). A variável "$<" é substituída pelas dependências do subprograma. Por fim, a variável especial "$@" é substituída pelo nome do arquivo sendo compilado. |
| |
| |