Нет никакого единственного интерфейсного или базового класса, который они все наследовали (который также не наследован другими классами), таким образом, простой ответ нет.
я действительно задаюсь вопросом, почему это - проблема все же. Что Вы желаете сделать в своем классе IntegerFunction, который может только быть сделан к целым числам?
SUBDIRS = a b c
default: all
$(SUBDIRS)::
$(MAKE) -C $@ $(MAKECMDGOALS)
all clean : $(SUBDIRS)
Являются ли dir-1, dir-2 и dir-3 взаимозависимыми или независимыми?
У меня аналогичная структура, но зависимость между подкаталогами, поэтому я предпочел использовать только параллельные сборки в каждом из подкаталогов. Вы получите это через
## default to four parallel runs
MAKEFLAGS += -j 4
all:
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) ); done
. Но еще один трюк - прочитать SUBDIRS
в руководстве по make - вам не нужен цикл for
, так как make
] может развернуть это за вас. Попробуйте что-нибудь вроде
## default to four parallel runs
MAKEFLAGS += -j 4
SUBDIRS = dir-1 dir-2 dir-3
$(SUBDIRS): #whatever your depends here
$(MAKE) -C $@
Это, вероятно, не даст прямого ответа на ваш вопрос, но помимо того, что предлагают другие ответы, я бы рекомендовал изучить нерекурсивные методы make. Это действительно элегантный способ распараллелить сборку, хотя, в зависимости от существующих файлов Makefile, может потребоваться значительные усилия. У нерекурсивного make есть преимущества, не ограничивающиеся простым распараллеливанием: он видит полный граф зависимостей, и поэтому ему не нужно строить слишком мало или слишком много, что означает более быстрое (иногда намного более быстрое) время сборки.
Некоторые ресурсы: