2014-01-08 62 views
0

我有這樣的Makefile:如何使用make構建庫列表?

LIBS = \ 
lib1 \ 
lib2 
etc... 

libs : $(LIBS) 

$(LIBS) : 

    @if [ -f lib/${@}/makefile ]; then cd lib/${@}/; $(MAKE); fi 

我需要它來切換到該目錄爲每個庫和編譯。出於某種原因,只有$ LIBS中的第一個庫(即lib1)被構建。

$ @是否是在這裏使用的正確變量?

謝謝!

+0

複製並粘貼上面的確切makefile(減去'etc ...'行)和'lib/lib1/makefile'和'lib/lib2/makefile'文件,它在這裏工作得很好。 –

回答

0

也許lib/${@}/makefile不存在,但lib/${@}/Makefile呢? make可以正常工作。

一般來說,你不應該測試makefile是否存在;如果它不存在那應該是一個錯誤:或者該目錄不是一個庫目錄,或者$(LIBS)被用於幾件事情,這意味着它應該被重構。