makefile 問題備忘

2021-08-03 14:23:05 字數 838 閱讀 2661

一.備忘

1.clean :

-rm edit $(objects)

而在rm命令前面加了乙個小減號的意思就是,也許某些檔案出現問題,但不要管,繼續做後面的事。

2.萬用字元匹配只能在規則裡面或者命令裡面,變數裡面不能直接使用萬用字元,只能夠使用函式來做這些事情比如wildcard。

3.vpath

4. .c.o 

注意其中的 .c.o ,其實是 和 %o:%c 等價。是乙個舊格式

5.$(var:=)

此格式的變數,將本來變數$var裡面的pattern替換成replacement

相當於「$(patsubst %,%,$(var))」這個函式。

比如$var=foo.c abc.c

obj = $(var:.c=.o) 會將obj的值變為

obj = foo.o abc.o

6.偽目標

特殊的指明這是乙個標籤不是乙個目標檔案。因為可能出現我編譯的目標裡面有乙個目標檔案名字確實就是clean。

所以加上phony說明我下面定義的這個是乙個偽目標只是乙個標籤,不需要生成,只需要執行命令

.phony : clean

clean :

-rm edit $(objects)

二.函式

2.1 跟字串有關係的函式

subst patsubst strip findstring filter filter-out sort word wordlist words firstword

2.2 檔案有關係的函式

1.dir notdir suffix basename addsuffix addprefix join

makefile編譯問題

porting http 時遇到 makefile因為編譯時編碼的問題,導致無法編譯的問題。開始報錯是提示,api的倚賴項上,缺少分割符號,仔細檢查了下 和 都寫的很規矩啊。檢視另乙個可以編譯的資料夾的makefile,發現寫法完全相同,只是他對的很齊,心想難道這裡還有這種原因,抱著除錯時期懷疑一切...

plsql問題備忘

1 plsql動態表不可執行,本次會話的自動統計被禁止。當建立使用者時,沒有給予某四個物件許可權,會導致這個問題。方法 以管理員身份登入並用一下sql語句賦予管理員使用者的表 v session,v sesstat,v statname的select許可權 grant select on v sta...

Makefile編譯問題彙總

最近使用makefile編譯遇到了些問題,反覆地排查了4天多,才解決,要處理的問題很簡單,就是把一堆.c檔案編譯打包成.so,然後再把.so和demo.o打包成可執行檔案,遇到了下面 三個問題,總結一下 1 問題描述在這裡 原因 在生成可執行檔案的時候,加入了 shared引數,這時生成的並不是可執...