Добавление другого возможного решения, которое я видел для потомков ... Я знаю, что ОП настороженно относился к изменению общего make-файла, но что-то вроде этого работает и требует минимальных изменений.
локальный make-файл 1:
CLEAN=MyExe1 MyExe2
....
include /my/common/makefile
локальный makefile 2:
CLEAN=MyExe3 MyExe4
....
include /my/common/makefile
общий make-файл:
clean:
rm -f *.dep *.o *.a $(CLEAN)
По сути, идея состоит в том, чтобы определить некоторую переменную (в данном случае CLEAN
) в каждом локальном make-файле со всеми конкретными элементами, которые вы хотите удалить. Затем общий make-файл запускает rm -f
для всех общих типов файлов, которые нужно удалить, плюс все, что было специально помечено для удаления в каждом локальном make-файле через переменную CLEAN
. Если ничего не нужно удалять, просто опустите объявление переменной или оставьте его пустым (CLEAN=
)
Так что теперь, если мы запускаем make clean
для локального make-файла 1, он выполняет
rm -f *.dep *.o *.a MyExe1 MyExe2
И если мы запустим make clean
для локального make-файла 2, он выполнит
rm -f *.dep *.o *.a MyExe3 MyExe4