makefile: how to add a prefix to the basename?
Asked Answered
S

1

54

I have a list of file path like that:

FILE_PATH := a1.so a2.so bla/a3.so bla/a3.so bla/blo/a4.so....

I need to add a prefix to the basename in order to get:

FILE_PATH_PREFIXED := liba1.so liba2.so bla/liba3.so bla/liba3.so bla/blo/liba4.so....

any idea?

Scheider answered 24/8, 2009 at 14:8 Comment(0)
B
103

Look at Make's addsuffix function.

Here is an example we use with `addsuffix` to place obj files one directory below
the source.


SOURCE += MainThread.cpp
SOURCE += Blah.cpp

OBJ=$(join $(addsuffix ../obj/, $(dir $(SOURCE))), $(notdir $(SOURCE:.cpp=.o)))

From the make manual:

$(addprefix prefix,names...)

The argument names is regarded as a series of names, separated by whitespace; prefix is used as a unit. The value of prefix is prepended to the front of each individual name and the resulting larger names are concatenated with single spaces between them. For example,

$(addprefix src/,foo bar)

produces the result src/foo src/bar.

Bobbyebobbysocks answered 24/8, 2009 at 14:14 Comment(2)
ah thanks ! I knew about the addprefix/addsuffix functions but I was missing the join function...Scheider
I agree with dm76' assesment that indeed the key value of this fine answer is join().Priestess

© 2022 - 2024 — McMap. All rights reserved.