LinuxForum.Fans
Тема

Make

Автор: michat 5 сообщений 1954 просмотров
#191633

Доброго времени суток!

Почему make выполняет только первую цель, после чего завершает работу?

IFORT = gfortran
FT = $(IFORT) -c
LK = $(IFORT)
.PHONY = clean

prog_mod2.o : prog_mod2.f90
$(FT) prog_mod2.f90

prog_mod.o: prog_mod.f90
$(FT) prog_mod.f90

prog.o: prog.f90
$(FT) prog.f90

prog.exe: prog_mod.o prog_mod2.o prog.o
$(LK) prog_mod.o prog_mod2.o prog.o

clean:
rm -f *.o *.mod *~ */*~ *.swp

-------------------------------------
В итоге =>
$ make
make: `prog_mod2.o' не требует обновления.
-------------------------------------

В итоге на этом всё обрывается...(((

#191642

Разобрался сам!

#191646
michat написал:
Разобрался сам!

в таких случаях принято писать решение.

#191649

При вызову программы нужно указать цель (что я раньше не делал по неопытности и незнанию), т.е.
--------------
$make all

gfortran -c prog_mod.f90
gfortran -c prog_mod2.f90
gfortran -c prog.f90
gfortran -o prog.exe prog_mod.o prog_mod2.o prog.o
./prog.exe
rm -f *.o *.mod *~ */*~ *.swp *.txt *.exe *.out
------------

Makefile здесь следующий

-------------
IFORT = gfortran
FT = $(IFORT) -c
LK = $(IFORT)
.PHONY = clean

prog_mod2.o : prog_mod2.f90
$(FT) prog_mod2.f90

prog_mod.o : prog_mod.f90
$(FT) prog_mod.f90

prog.o : prog.f90
$(FT) prog.f90

prog.exe : prog_mod.o prog_mod2.o prog.o
$(LK) -o prog.exe prog_mod.o prog_mod2.o prog.o

prog.run : prog.exe
./prog.exe

clean :
rm -f *.o *.mod *~ */*~ *.swp *.txt *.exe *.out

all : prog.run clean
-------------

#191653
michat написал:
При вызову программы нужно указать цель

не совсем верно... достаточно было просто поставить основную цель первой. обычно это all

Войдите или зарегистрируйтесь, чтобы ответить.