makefile在同一目錄下編譯出多個可執行檔案

2021-09-25 13:27:11 字數 1007 閱讀 1260

library +=  -ltpn_agent -ltpn_effect -ltpn_proc -lhiredis  -ljson

ldflags += --as-needed

srcs     = $(wildcard *.c)

objs     = $(patsubst %.c, %.o, $(srcs))

targets  = $(srcs:%.c=%)

$(info $(objs))

$(info $(targets))

all : $(targets)

$(targets): %: %.o

$(cc) $(ldflags) $(library) -o $@ $<

$(objs) : %.o: %.c ./tpn_utils_common.h

$(cc) -c $(cflags) -o $@ $<

clean :

@rm -rf $(targets) $(objs)

#.suffixes:

.phony : all clean

需要注意點:

自動化變數,就是這種變數會把模式中所定義的一系列的檔案自動地挨個取出,直至所有的符合模式的檔案都取完了。 

自動化變數只應出現在規則的命令中,否則後果不可**

$@ 表示規則中的目標檔案集。 

在模式規則中,如果有多個目標,那麼$@就是匹配於目標中模式定義的集合。 

注意,其目標是乙個乙個取出來的

$< 依賴目標中的第乙個目標名字。 

如果依賴目標是以模式(即% )定義的,那麼$《將是符合模式的一系列的檔案集。 

注意,其是乙個乙個取出來的

$^ 所有的依賴目標的集合。以空格分隔。 

如果在依賴目標中有多個重複的,那個這個變數會去除重複的依賴目標,只保留乙份。

$+ 這個變數很像$^,也是所有依賴目標的集合,只是它不去除重複的依賴目標。

.h標頭檔案只應該出現在依賴中,不應該出現在編譯的命令列中。(編譯的時候會被預處理器包含到.c檔案中)

關於pycharm在同一目錄下無法匯入 py檔案

如圖 在同乙個目錄下明明是存在相應的檔案的,在另乙個檔案中匯入卻報錯,編譯器提示沒有對應的模組。當前資料夾郵件,選中mark directory as sources root 此時資料夾如圖呈現藍色,表明此資料夾為資源資料夾。此時,在檔案中引入方式為直接import 注 1.在不同的資料夾路徑下,...

Python呼叫同一目錄下的模組

aa.py檔案如下 def aaout print it is an aa funcition.bb.py中需要呼叫aa.py檔案,cc.py為主檔案 1 若cc.py位於mydir資料夾內,則bb.py呼叫aa.py時需要在aa前面加上 例如,此時bb.py為 from.aa import aao...

cmake 同一目錄下多個原始檔

接下來進入稍微複雜的例子 在同乙個目錄下有多個原始檔。在之前的目錄下新增2個檔案,testfunc.c和testfunc.h。新增完後整體檔案結構如下 testfunc.c內容如下 testfunc.c include include testfunc.h void func int data te...