Makefile高階技巧多個檔案編譯

2021-10-02 00:25:19 字數 1002 閱讀 7014

includes = -i /home/linux  \

-i ./ \

-i /usr/include

#新增鏈結的標頭檔案所在目錄

ext_cc_opts = -dext_mode

rtm_cc_opts = -duse_rtmodel

#定義巨集

cflags = -o

cflags += $(ext_cc_opts)

cflags +=$(rtm_cc_opts)

#編譯器選項

srcs:=hello.c hello1.c

#編譯原始檔列表

objs := $(srcs:.c=.o)

#各個原始檔所對應的目標列表

rm = rm -f

#刪除cc = gcc

ld = gcc #選擇編譯器

.phony: all

all: do#偽目標

do : $(objs)

$(ld) -o $@ $(objs) -lm

%.o : %.c

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

clean:

$(rm) $(objs) do

-i /home/hello/include,表示將/home/hello/include目錄作為第乙個尋找標頭檔案的目錄,

尋找的順序是:/home/hello/include–>/usr/include–>/usr/local/include

-l /home/hello/lib,表示將/home/hello/lib目錄作為第乙個尋找庫檔案的目錄,

尋找的順序是:/home/hello/lib–>/lib–>/usr/lib–>/usr/local/lib

對於第三方提供的動態鏈結庫(.so),

一般將其拷貝到乙個lib目錄下(/usr/local/lib),或者使用-l來指定其所在目錄,

Makefile語法高階

迴圈條件 其他makefile基本語法 呼叫子makefile 類似函式 關鍵字有 ifeq,ifneq,ifdef,ifndef ifeq cc gcc cc o else cc o xx xx endif函式 含義 subst 字串替換函式 patsubst 模式字串替換函式 strip 去空格...

makefile高階(二) 命令

本文由導學寶 每個目標裡都可以執行shell命令,每個命令前以 tab 開頭,它不能是空格。通常情況下,你執行的命令會在輸出中顯示出來,比如 output echo hello 執行make會有如下結果 make output echo hello hello 有時我們不希望把執行的命令顯示出來,我...

C 編譯多個檔案makefile

逐步編譯 g c apcluster.cppapcluster.h 生成apcluster.o 中間檔案 g c example.cppapcluster.h 生成example.o中間檔案 g o main apcluster.o example.o makefile gnu的make很強大,它可...