makefile 標頭檔案查詢路徑

2021-09-13 11:50:29 字數 2816 閱讀 9130

0.前言

從學習c語言開始就慢慢開始接觸makefile,查閱了很多的makefile的資料但總感覺沒有真正掌握makefile,如果自己動手寫乙個makefile總覺得非常吃力。所以特意借助部落格總結makefile的相關知識,通過例子說明makefile的具體用法。

1.只有單個c檔案   

2.含有多個c檔案    

3.需要包括標頭檔案路徑

4.增加巨集定義

5.增加系統共享庫

6.增加自定義共享庫

7.乙個實際的例子

【**倉庫】——makefile-example

1.三個c檔案和三個標頭檔案

此處的例子稍微複雜些但更接近實際情況。

檔案結果如下:根目錄中包含test.c makefileh和資料夾test-add和資料夾test-sub。

test.c makefile

【test-add】test-add.c test-add.h

【test-sub】test-sub.c test-sub.h

【test.c】

#include

#include

#include

int main(void)

【test-add.c】

#include

int add(int a, int b)

【test-add.h】

#ifndef __test_add

int add(int a, int b);

#endif

【test-sub.c】

#include "test-sub.h"

int sub(int a, int b)

【test-sub.h】

#ifndef __test_sub

int sub(int a, int b);

#endif

2.複習gcc指令

gcc指令可通過-i字首指定標頭檔案路徑,特別說明./代表當前路徑,../代表上一級目錄。

3.編寫makefile

請替換其中的[tab],並以**倉庫中的makefile檔案為主。

# 指令編譯器和選項

cc=gcc

cflags=-wall -std=gnu99

# 目標檔案

target=test

srcs = test.c \

./test-add/test-add.c \

./test-sub/test-sub.c

inc = -i./test-add -i./test-sub

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

$(target):$(objs)

# @echo target:$@

# @echo objects:$^

[tab]$(cc) -o $@ $^

clean:

[tab]rm -rf $(target) $(objs)

%.o:%.c

[tab]$(cc) $(cflags) $(inc) -o $@ -c $<

【具體說明】

相比於單個檔案和多個檔案的makefile,通過變數inc制定了標頭檔案路徑。標頭檔案路徑之間通過空格隔開。

編譯規則%.o:%.c中加入了標頭檔案引數$(cc) $(cflags) $(inc) -o $@ -c $<,那麼在編譯的過程中便會出現

gcc -wall -std=gnu99 -i./test-add -i./test-sub -o test.o -c test.c。和單個檔案和多個檔案的makefile相比增加了標頭檔案路徑引數。

srcs變數中,檔案較多時可通過「\」符號續行。

【編譯】

make clean && make

【控制台輸出】

rm -rf test test.o ./test-add/test-add.o ./test-sub/test-sub.o

gcc -wall -std=gnu99 -i./test-add -i./test-sub -o test.o -c test.c

gcc -wall -std=gnu99 -i./test-add -i./test-sub -o test-add/test-add.o -c test-add/test-add.c

gcc -wall -std=gnu99 -i./test-add -i./test-sub -o test-sub/test-sub.o -c test-sub/test-sub.c

gcc -o test test.o test-add/test-add.o test-sub/test-sub.o

GNU GCC查詢路徑

1.標頭檔案 gcc 在編譯時如何去尋找所需要的標頭檔案 header file的搜尋會從 i開始 然後找gcc的環境變數 c include path,cplus include path,objc include path 再找內定目錄 usr include usr local include...

24 模板查詢路徑

在專案的settings.py檔案中,有乙個templates的配置,這個配置包含了模板引擎的配置,模板查詢路徑的配置,模板上下文的配置等,模板路徑可以在兩個地方配置。dirs 這是乙個列表,在這個倆表中可以存放所有的模板路徑,以後在檢視函式中使用了render或者是render to string...

回溯法查詢路徑

題目描述 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則該路徑不能再進入該格仔。例如 begin a b c e s f c s a d e ...