Makefile常用筆記

2021-10-24 06:51:22 字數 2810 閱讀 3729

makefile備忘筆記

注釋方法 : #是單行注釋(shell、perl 指令碼也是使用 # 字元作為注釋符)

關鍵概念:$@,$^,$<代表的意義分別是:$@:目標檔案,$^:生成目標檔案的所有的依賴檔案,$<:第乙個依賴檔案

vpath的作用:

在一些大的工程中,有大量的原始檔,我們通常的做法是把這許多的原始檔分類,並存放在不同的目錄中。所以,當 make 需要去找尋文 件的依賴關係時,你可以在檔案前加上路徑,但最好的方法是把乙個路徑告訴 make,讓 make 在自動去找。用法如下直接新增編譯所需原始檔路徑

vpath = \

$/api/core/src \

./platform/src/

一般寫法

includes 變數存放標頭檔案位置 記住加 -i 命令

includes = \

-i. \

-i$/api/core/inc \

-i./platform/inc

lib_srcs 變數存放編譯使用庫位置

lib_srcs = \

vl53l0x_api_calibration.c \

vl53l0x_api_core.c \

vl53l0x_api_ranging.c \

vl53l0x_api_strings.c \

vl53l0x_api.c \

vl53l0x_platform.c

乙份寫的比較好的makefile檔案用於參考

cc = $(cross_compile)gcc

ar = $(cross_compile)ar

rm = rm

cflags = -o0 -g -wall -c

output_dir = bin

obj_dir = obj

target_lib = $(output_dir)

/libvl53l0x_rasp.a

api_dir = .

/api_dir

includes = \

-i. \

-i$/api/core/inc \

-i./platform/inc

vpath = \

$/api/core/src \

./platform/src/

lib_srcs = \

vl53l0x_api_calibration.c \

vl53l0x_api_core.c \

vl53l0x_api_ranging.c \

vl53l0x_api_strings.c \

vl53l0x_api.c \

vl53l0x_platform.c

lib_objs = $(lib_srcs:%

.c=$(obj_dir)/%

.o)examples_src = $(wildcard examples/*

)examples_bin = $(examples_src:examples/%

.c=$(output_dir)/%

).phony: all

all: $

$(target_lib): $(lib_objs)

mkdir -p $(

dir $@)

$(ar)

-rcs $@ $^

$(obj_dir)/%

.o:%

.c mkdir -p $(

dir $@)

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

$(examples_bin): bin/%:examples/%

.c mkdir -p $(

dir $@)

$(cc)

-l$(output_dir) $^ -lvl53l0x_rasp $(includes)

-o $@

examples:$ $ $(examples_bin)

.phony: clean

clean:

-$-rf .

/$(output_dir)/*

./$(obj_dir)

/*

嘿嘿,新增自己寫的makefile檔案忘了就看看

cc = gcc

ar = ar

rm = rm

lib_dir =

-l./src

lib_name =

-lvl53l0x_rasp

include =

-i./inc \

-i./platform/inc

vpath =

./src \

./platform/src

target = vl53l0x_continuousranging_example

$(target)

: vl53l0x_continuousranging_example.c #表示target的依賴檔案是vl53l0x_continuousranging_example.c

mkdir build

$(cc) $^ $(lib_dir) $(lib_name) $(include)

-o .

/build/$(target)

#write by kuso

#lib_dir 庫檔案位址

#lib_name 庫名

#include 標頭檔案位址

#vpath 原始檔位址

jquery,js常用筆記

10.addaddresscon load url,function function表示load執行成功後呼叫的函式 8.var aa addaddresscon offset 獲取元素相對body的位置偏移量,包括top和left兩個屬性。console.log aa.top 7.this sl...

pandas常用筆記

1.ix iloc loc 這三個都是用於索引資料的。import numpy as np import pandas as pd data np.arange 12 reshape 3,4 df pd.dataframe data df.loc 0 okdf.iloc 0 okdf.index a...

Docker常用筆記

拉取映象比較慢,就可以配置映象加速器 9.建立乙個守護式容器 後台執行且建立後不直接進入容器,且進入容器退出容器後容器不停止c3為容器名 docker run itd name c3 centos bin bash 10.檢視正在執行的容器 11.停止容器 12.檢視容器的詳細資訊 docker i...