У меня есть такое дерево каталогов с некоторыми "общими целями" в файле rules.Makefile
:
├── Makefile
├── rules.Makefile
└── my_subdir
└── Makefile
Я хотел бы вызвать эти "общие цели" в обоих Makefile
(s) в родительском каталоге и дочернем каталоге.
Также «пользовательские цели» в Makefile
в дочернем каталоге должны вызываться из Makefile
в родительском каталоге.
По какой-то причине я могу вызывать цели в rules.Makefile
только с родного брата Makefile
(тот, что находится в родительском каталоге).При использовании относительных путей в Makefile
в дочернем каталоге при попытке доступа к rules.Makefile
в родительском каталоге я получаю некоторые ошибки.
Содержимое Makefile
в родительском каталоге:
RULES_MAKEFILE_PATH=$(PWD)/rules.Makefile
include $(RULES_MAKEFILE_PATH)
foo-parent:
@echo $(RULES_MAKEFILE_PATH)
Содержимое Makefile
в дочернем каталоге ( обратите внимание, что двойная точка ..
):
RULES_MAKEFILE_PATH=$(PWD)/../rules.Makefile
include "$(RULES_MAKEFILE_PATH)"
foo-child:
@echo $(RULES_MAKEFILE_PATH)
При вызове из родительского каталога make foo-parent
, тогда я вижу ожидаемый путь.
При вызове от дочернего директора make foo-child
, тогда я вижу эту ошибку:
$ make foo-child
Makefile:9: "/<PARENT_PATH>/my_subdir/../rules.Makefile": No such file or directory
make: *** No rule to make target '"/<PARENT_PATH>/my_subdir/../rules.Makefile"'. Stop.
- Как я могу заставить относительные пути работатьв «дочернем каталоге»?
- Также, как я могу вызвать цели, определенные в
Makefile
в дочернем каталоге (например, foo-child
) из Makefile
в родительском каталоге?