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 ...