Команда make
находит много интересных, неожиданных применений.У вас один.
Было бы неплохо, если бы вы могли отдельно собрать bal1.o
и bal2.o
, но я полагаю, что это не будет служить вашему делу, или вы вряд ли бы задали вопрос.
В вашей ситуации я бы попробовал следующее: построить bal1.o
и bal2.o
по отдельности, , хотя это (само по себе) не будет работать в вашем случае. Затем, с помощью команд сборки с отступом табуляциивременно создайте символическую ссылку с именем bal.o
, которая указывает либо на bal1.o
, либо на bal2.o
.Как только ссылка выполнит свою функцию, удалите ее.
Например:
exec1: aux1.o bal1.o exec1.f90; rm -f aux2.o && ln -s bal1.o bal.o && command-to-build-exec1 && rm bal.o
bal1.o: aux1.o bal.f90
.PHONY: bal.o
(строка .PHONY
наименее важна. Вы можете опустить ее, но если ваш make
это GNU Make, тогда он сообщает GNU Make, что фактический файл bal.o
не будет построен.)
Точка с запятой ;
может быть заменена новой строкой, за которой следует горизонтальная табуляция, если хотите, но я делаюне знаю, как сделать переполнение стека правильно представить символ табуляции.Точка с запятой работает.
Конечно, вы замените command-to-build-exec1
любой командой в вашем конкретном случае.