假如,有很多文件,每個文件都要變成一個單獨的目標文件,如果使用makefile的話,最好能用一個 for 循環來做。
makefile是支持使用 for的。
先假定有下面幾個文件:
Makefile可寫成如下的形式:
其中
TARGETS = $(SRCS:%.cpp=%)
相當于
TARGETS = $(patsubst %.cpp,%,$(SRCS))
需要說明的幾點:
1. 因為 for屬于 shell 命令,所以這里的target變量需要再加上一個$ , 確保shell接收到的是 $target (makefile會先把 $$target 處理為 $target, 傳給shell)。
2. 因為,makefile的 target對應的 命令,每一行都是在一個單獨的subshell里執行,所以,如果想要 shell 變量始終是可見的話,需要加一個反斜線,表示這些命令是在一個 subshell里執行。
-
Linux
+關注
關注
87文章
11345瀏覽量
210407 -
for
+關注
關注
0文章
44瀏覽量
15873 -
Makefile
+關注
關注
1文章
125瀏覽量
19220
發布評論請先 登錄
相關推薦
如何共享文件給虛擬機中的Linux系統
![如何共享<b class='flag-5'>文件</b>給<b class='flag-5'>虛擬機</b>中的<b class='flag-5'>Linux</b>系統](https://file1.elecfans.com/web2/M00/94/4D/wKgaomTkZi6ATkOqAACL84mc7W0354.jpg)
如何寫Makefile編譯匯編和C文件
![如何寫<b class='flag-5'>Makefile</b><b class='flag-5'>編譯</b>匯編和C<b class='flag-5'>文件</b>](https://file1.elecfans.com//web2/M00/A6/F4/wKgZomUMQXKAJGr4AAAaB5bvPtg176.png)
【嵌入式Linux編譯調試---1---】VisualStdio+VisualGDB
![【嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>編譯</b>調試---1---】VisualStdio+VisualGDB](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
VMware虛擬機和主機傳輸文件
![VMware<b class='flag-5'>虛擬機</b>和主機傳輸<b class='flag-5'>文件</b>](https://file1.elecfans.com/web2/M00/89/9B/wKgZomSIO8CAP8I1AACZRiRfMH4437.png)
評論