Reputation: 8452
SOURCE := ../Src/Folder1/source.a66
OBJ := ../Src/Folder1/source._ia
OUT := ../Obj
all: $(OBJ)
echo "DONE"
# 1) Works
%._ia: %.a66
echo "Test" > $@
# 2) Don't work
$(OUT)/%._ia: %.a66
echo "Test" > $@
../Src/Folder1
make: *** No rule to make target '../Src/Folder1/Os_cpu_a._ia', needed by '../Obj/target'. Stop.
Upvotes: 0
Views: 1212
Reputation: 25483
At least you have to modify prerequisites of all
(value of $(OBJ)
):
OBJ := ../Obj/Folder1/source._ia
Then modify your pattern rule as follows:
../Obj/%._ia: ../Src/%.a66
echo "Test" > $@
Finally, after extracting ../Obj
and ../Src
to variables, you'll get something like:
SRC_DIR := ../Src
OBJ_DIR := ../Obj
SRC := $(SRC_DIR)/Folder1/source.a66
OBJ := $(SRC:$(SRC_DIR)/%.a66=$(OBJ_DIR)/%._ia)
$(OBJ_DIR)/%._ia: $(SRC_DIR)/%.a66
echo "Test" > $@
Upvotes: 2