我的 makefile 定义了一个链接命令:
prod_link = $(LINK) $(LINK_FLAGS) -o$(PROD_OUT) $(PROD_OBJS)
其中$(PROD_OBJS)
是以下形式的目标文件列表:
PROD_OBJS = objfile1.obj objfile2.obj objfile3.obj ... objfileN.obj
现在 makefile 本身位于我的项目目录的根目录中。将对象和列表文件放在根目录会很麻烦,我想将它们放在子文件夹中。
构建 obj 文件并将其输出到子文件夹是可行的,我正在使用后缀和推理:
.s.obj:
$(ASSEMBLY) $(FLAGS) $*.s -o Objects\$*.obj
问题是将Objects
文件夹传递给链接命令。
我试过了:
prod_link = $(LINK) $(LINK_FLAGS) -o$(PROD_OUT) Objects\$(PROD_OBJS)
但只有目标文件列表中的第一个文件才能获得文件夹的名称。
如何将Objects
子文件夹传递给列表中的所有文件$(PROD_OBJS)
?
编辑
我也试过
PROD_OBJS = $(patsubst %.ss,Object\%.obj, $(PROD_SRC))
但得到:
makefile(51) : fatal error U1000: syntax error : ')' missing in macro invocation
Stop.
这很奇怪……