Hi I have a makefile I am creating where each .o is represented as a relative path to another directory and has a dependency on a .cpp file in the local directory. My understanding of the problem is that I can’t use functions in a rule definition so the rule:
%.o: %.cpp
results in a prerequisite .cpp that is in the same directory as the .o which is not where the cpp is actually located. For example:
../../Tmp/MyClass.o: ../../Tmp/MyClass.cpp <— WRONG, result of %.o: %.cpp
../../Tmp/MyClass.o: MyClass.cpp <— RIGHT, how do I do this in an automatic way?
Lastly the output, which is in yet another directory, has a dependency on the .o’s so they must all have full relative path information from the beginning:
OBJS := $(addprefix ../../../Tmp/XCode/${PLATFORM}/${CONFIGURATION}/, $(addsuffix .o, $(basename ${SRCS})))
${OUTPUT}: ${OBJS} ; ${AR} $@ ${OBJS}
Thanks!
I think kristi’s solution will work, but here’s another way to do the same thing: