Зависимости в makefile (как их проще обрабатывать?)

Модератор: Модераторы разделов

Ответить
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Зависимости в makefile

Сообщение kamre »

В проекте есть два независимых модуля (mod_a.f90 и mod_b.f90), еще один модуль (mod_c.f90), зависит от двух предыдущих, и один файл основной программы (main.f90).
Зависимости, как на рисунке:
Изображение
Подскажите, как правильно и наиболее кратко описать эти зависимости в makefile?

Сейчас у меня файл выглядит так:

Код: Выделить всё

FC = ifort
FFLAGS = -O0 -g3
SRC_DIR = ./src
OBJ_DIR = ./obj
BIN_DIR = ./bin
PROG_NAME = prog
SOURCES = $(wildcard $(SRC_DIR)/*.f90)

all: $(OBJ_DIR)/main.o
    $(FC) $(FFLAGS) -module $(OBJ_DIR) $(wildcard $(OBJ_DIR)/*.o) -o $(BIN_DIR)/$(PROG_NAME)

clean:
    rm $(OBJ_DIR)/*.o
    rm $(OBJ_DIR)/*.mod
    rm $(BIN_DIR)/$(PROG_NAME)

tags:
    etags --language=fortran $(SOURCES)

$(OBJ_DIR)/main.o: $(OBJ_DIR)/mod_c.o $(SRC_DIR)/main.f90
    $(FC) $(FFLAGS) -module $(OBJ_DIR) -c $^ -o $@

$(OBJ_DIR)/mod_c.o: $(OBJ_DIR)/mod_b.o $(OBJ_DIR)/mod_a.o $(SRC_DIR)/mod_c.f90
    $(FC) $(FFLAGS) -module $(OBJ_DIR) -c $^ -o $@

$(OBJ_DIR)/mod_a.o: $(SRC_DIR)/mod_a.f90
    $(FC) $(FFLAGS) -module $(OBJ_DIR) -c $^ -o $@

$(OBJ_DIR)/mod_b.o: $(SRC_DIR)/mod_b.f90
    $(FC) $(FFLAGS) -module $(OBJ_DIR) -c $^ -o $@


Можно ли это сделать аккуратнее, короче? Можно ли эти зависимости как-то создавать автоматически?
Спасибо сказали:
Аватара пользователя
amaora
Сообщения: 95
ОС: Slackware
Контактная информация:

Re: Зависимости в makefile

Сообщение amaora »

gcc умеет генерировать зависимости, по ключу -MD и ещё нескольким. может и ifort может?
кто здесь?
Спасибо сказали:
Ответить