User Tools

Site Tools


makefile

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
makefile [2016/09/01 19:49] – [Opção 2] jefersonmakefile [2016/09/01 20:02] (current) – [Opção 3] jeferson
Line 77: Line 77:
 ==== 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.
  
  
makefile.1472759398.txt.gz · Last modified: by jeferson