Как переопределить makefile внутри вложенного makefile

#makefile #gnu-make

#makefile #gnu-сделать #gnu-make

Вопрос:

У меня есть 3 makefile, скажем aa.mk , bb.mk и cc.mk и я могу редактировать cc.mk только.

bb.mk включает aa.mk .(используя include stmt)

cc.mk включает bb.mk .(используя include stmt)

Итак, в некотором смысле cc.mk включает aa.mk также. Я хочу отредактировать cc.mk таким образом, чтобы bb.mk включен, но не aa.mk . Другими словами, я хотел бы знать, есть ли способ, чтобы я мог удалить ссылку, сделанную на aa.mk изнутри cc.mk без редактирования aa.mk или bb.mk .

Примечание: у меня очень ограниченные знания о makefiles

Не удалось найти никакого решения.

Необходимо включить bb.mk без доступа aa.mk . Результат выводит значения из aa.mk , в то время как он должен печатать значения из cc.mk .

Комментарии:

1. Просто создайте копию bb.mk и отредактируйте его. В противном случае это невозможно, если только bb.mk уже есть какое-то предопределенное условие, которое не следует включать aa.mk .

Ответ №1:

Попробуйте -include aa.mk в cc.mk файл.

 include foo bb.mk bish bash
-include aa.mk
  

Комментарии:

1. Это не делает ничего похожего на то, что хотел задать вопрос. -include не означает «отменить включение этого файла».

2. Если вы хотите, чтобы make просто игнорировал makefile, который не существует или не может быть переделан, без сообщения об ошибке, используйте директиву -include вместо include, например, так: -включить имена файлов…

3. Конечно, но это не то, что задал вопрос. В этом случае makefile определенно существует и включен bb.mk . Просьба состоит в том, чтобы разрешить cc.mk избегать включения, aa.mk когда bb.mk включено: Необходимо включить bb.mk без доступа aa.mk