看gnu make的makefile,在自動依賴跟蹤裡用到了一條sed命令
sed 's,/($*/)/.o[ :]*,/1.o $@ : ,g' < $@.$$$$ > $@;
順便學習一下sed編輯器
%.d: %.c
@set -e; rm -f $@; /
$(cc) -m $(cppflags) $< > $@.$$$$
; /sed 's,/($*/)/.o[ :]*,/1.o $@ : ,g' < $@.$$$$
> $@; /
rm -f $@.$$$$
通過gcc等編譯器找到.c檔案的依賴的標頭檔案,放到$@.$$$$裡$@就是.d檔案 $$$$是臨時檔案
$@.$$$$ 的內容可能是 main.o : main.c defs.h
這句話的意思是:從$@.$$$$裡讀取每一行,處理完了放到$@裡。怎麼處理呢?就是把'main.o : '替換成 'main.o main.dep :'
於是main.o : main.c defs.h就變成了
main.o main.dep : main.c defs.h
Makefile裡的sed指令
在makefile裡經常看到sed指令,經常看到替換功能,今天寫了個makefile來學習下sed的替換功能,makefile如下 test abcdefghisdabcjsdlfkj test2 test sed e s abc 123 g debug echo test echo test2 然...
makefile裡經常看到sed指令
問題 這裡,我們給出了乙個模式規則來產生 d 檔案 d c set e rm f cc m cppflags sed s,o 1.o g rm f 這個規則的意思是,所有的 d 檔案依賴於 c 檔案,rm f 的意思是刪除所有的目標,也就是 d 檔案,第二行的意思是,為每個依賴檔案 也就是 c 檔案...
查詢資料的上一條和下一條
查詢當前資料的下一條 select from 表 where id 當前資料的id order by id asc limit1 查詢當前資料的上一條 select from 表 where id 當前資料的id order by id asc limit 1 查詢當前資料的下一條 select f...