4

我的工作文件夹的树:

.
|-- work_folder1
|    |-- some.c file
|    |-- Makefile B
|
|-- some.c file
|-- Makefile A

我的makefile A 在Makefile B 中调用'all' 规则。Makefile B 的'all' 规则生成一个名为'Bo' [$(NAME) variable] 的.o 文件并将其复制到工作文件夹(cp ../)。Makefile A 编译.c 文件并将它们与“Bo”链接。但是,如果我决定更改 Makefile B 中“Bo”的名称,例如“my_B.o”,则 Makefile A 无法编译,因为“Bo”不再存在。

如何从 Makefile A 读取 Makefile B 的 $(NAME) 变量?

4

2 回答 2

4

您可以在 Makefile B 中添加一个特殊.PHONY规则,以便它输出您想要的名称。

在 Makefile B

.PHONY: get_names

get_names:
    @echo "B.o"

在 Makefile A

B_Files:=$(shell $(MAKE) -C work_folder_B get_names)

# You can use $(B_Files) that will contain `B.o`.

请注意:=Makefile A 中的使用,以便您make只运行一次以获取名称。

于 2013-04-22T10:19:15.377 回答
0

我找到了 !非常感谢迪迪埃!

在我的 Makefile B 中:

$(NAME): my_B.o

PHONY: get_name

get_name:
    @echo $(NAME)

在我的 Makefile A 中:

B_Files:=$(shell make -s -C work_folder_B get_name)
于 2013-04-22T11:01:27.533 回答