2012-08-04 42 views
2

在我的makefile中,我希望在構建目標的依賴關係之前打印一個流程消息(類似「Build $(PROJ_NAME)project ...」)。例如我的目標看起來像下面這樣:在構建依賴關係之前在makefile中回聲

$(PROJ_NAME): $(OBJS) 
    echo "Build $(PROJ_NAME) project..." 
    $(LD) $(LDFLAGS) --gc-sections "-T$(MISC_DIR)/$(PROJ_NAME).ld" ... 

執行這個目標$(OBJS)建立依賴關係後,印我生成消息。在創建目標之前有沒有可能打印一條消息?

+1

這是設計出來的,因爲在您執行PROJ_NAME中指定的操作之前,請在採取您列出的操作之前照顧您特別講述的事情,以便照顧好您的行爲 – tbert 2012-08-04 10:51:41

回答

2

您可以在對象文件之前添加另一個依賴項,它總是被創建。事情是這樣的:

$(PROJ_NAME): pre_build $(OBJS) 
    $(LD) $(LDFLAGS) --gc-sections "-T$(MISC_DIR)/$(PROJ_NAME).ld" ... 

.PHONY: pre_build 
pre_build: 
    @echo "Build $(PROJ_NAME) project..." 

pre_build目標將(在大多數情況下,正常的)總是在目標之前$(OBJS)執行。

+4

依靠訂單是一種不好的做法構建先決條件,因爲它沒有被指定,並且在並行構建中不會像預期的那樣運行。 – 2012-08-04 12:20:06