tags:

views:

266

answers:

0

My makefile defines a link command:

prod_link = $(LINK) $(LINK_FLAGS) -o$(PROD_OUT) $(PROD_OBJS)

where $(PROD_OBJS) is a list of object files of the form:

PROD_OBJS = objfile1.obj objfile2.obj objfile3.obj ... objfileN.obj

Now the makefile itself is at the root of my project directory. It gets messy to have object and listing files at the root, I'd like to put them in a subfolder.

Building and outputing the obj files to a subfolder works, I'm doing it with suffixes and inference:

.s.obj:
    $(ASSEMBLY) $(FLAGS) $*.s -o Objects\$*.obj

The problem is to pass the Objects folder to the link command.

I tried:

prod_link = $(LINK) $(LINK_FLAGS) -o$(PROD_OUT) Objects\$(PROD_OBJS)

but only the first file in the list of object files gets the folder's name.

How can I pass the Objects subfolder to all files of my list $(PROD_OBJS)?


EDIT

I tried also

PROD_OBJS = $(patsubst %.ss,Object\%.obj, $(PROD_SRC))

but got:

makefile(51) : fatal error U1000: syntax error : ')' missing in macro invocation
Stop.

This is quite strange...