我有一堆C文件在不同的目錄中,我得到一個make: nothing to be done for 'all'
錯誤與我的遞歸Makefile;但是,如果我調整依賴性,我可以讓它工作......但我不明白爲什麼我必須這樣做。遞歸makefile不構建
這是我原來的Makefile:
APP_DIRS=rescoco ressys resvm
.PHONY: all
all: $(APP_DIRS)
$(APP_DIRS):
$(MAKE) --directory [email protected]
clean:
$(RM) *~
現在,如果我改變我的路線:.PHONY
到.PHONY: all $(APP_DIRS)
它建立的罰款。
另一種可能性是,如果我更改該行:$(APP_DIRS):
到$(APP_DIRS): clean
它可以正常工作。
(注:在卸下.PHONY目標不會改變任何東西)
那麼是什麼回事? Makefile試圖告訴我我沒有正確列出依賴項?我想make
會做這樣的事情:
- 打造
.PHONY
我首先要建立all
- 打造
all
我首先要建立$(APP_DIRS)
$(APP_DIRS)
已經沒有prereqs所以對於執行命令(這會導致遞歸運行)。
顯然我錯了;但爲什麼?
僅供參考,如果它的事項我的文件結構是這樣的:
Makefile #top level makefile as seen above
/rescoco
rescoco.c
Makefile #builds rescoco src and moves archive to ../lib directory
/ressys
ressys.c
Makefile #same as above but for ressys
/resvm
resvm.c
Makefile #same as above but for resvm
/lib
和我的生成命令簡直是make
。當我與make -n
或make -n all
跑我得到任何輸出:
:~/proj$ make -n all
make: Nothing to be done for 'all'.
:~/proj$
你使用了什麼命令?使所有? – 75inchpianist 2013-03-21 17:44:07
運行make -n查看到底發生了什麼。我也使用變量打印來確保一切正常。 – stdcall 2013-03-21 17:45:24
@ 75inchpianist - 只是'make',但'make all'會給出相同的結果。 (見編輯) – Mike 2013-03-21 17:50:37