2012-02-15 51 views
0
SOURCE := ../Src/Folder1/source.a66 
OBJ := ../Src/Folder1/source._ia 
OUT := ../Obj 

all: $(OBJ) 
    echo "DONE" 

# 1) Works  
%._ia: %.a66 
    echo "Test" > [email protected] 
# 2) Don't work 
$(OUT)/%._ia: %.a66 
    echo "Test" > [email protected] 

爲目標指定不同的輸出目錄將無法正常工作

  • 當我使用的第一個目標,在../Src/Folder1
  • 創建文件當我使用第二個目標,運行時,使我得到:

    make: *** No rule to make target '../Src/Folder1/Os_cpu_a._ia', needed by '../Obj/target'. Stop.

我在做什麼錯?

回答

2

至少你要修改的all先決條件(的$(OBJ)值):

OBJ := ../Obj/Folder1/source._ia 

然後修改您的形式規則如下:

../Obj/%._ia: ../Src/%.a66 
    echo "Test" > [email protected] 

最後,提取../Obj../Src後變量,你會得到像這樣:

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" > [email protected]