簡體   English   中英

Makefile可以使用一行建立多個目標嗎?

[英]Can a makefile build a several targets using one line?

我有一個makefile,其中列出了許多要構建的靜態庫,每個庫都在其自己的子文件夾中。 我已經在頂級makefile中定義了它們:

LIBS= \
lib1 \
lib2 \
etc...

我正在嘗試使用這些名稱(例如lib / lib1,lib / lib2)將makefile放入CD放入每個子文件夾,並構建它找到的每個庫的makefile。 我可以使用單個目標而不是每個庫使用單獨的目標嗎?

像這樣:

libs : $(LIBS)

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

我不確定$ @在這里是否是正確的變量,因為僅構建了第一個庫。

非常感謝!

您提供的makefile代碼段(大部分)是正確的,應該可以按預期工作。 如果您的真實makefile不能按預期工作,則意味着它與您在此處提供的示例之間存在某些差異。 在這種情況下,我們將無能為力。 請剪切並粘貼一個實際的失敗示例,以及您調用的命令和從make獲得的輸出。

需要注意的是,調用子make永遠不要使用static make命令。 始終使用$(MAKE)變量。

使用“ foreach”功能將簡化規則。 我認為以下makefile可以正常工作(未經測試):

LIBS := lib1 lib2 lib3


libs: 
     -@$(foreach l, $(LIBS), make -C /lib/$(l))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM