Makefile 常用符号#
1 =#
- 简单的赋值运算符
- 用于将右边的值分配给左边的变量
- 如果在后面的语句中重新定义了该变量,则将使用新的值
示例
HOST_ARCH = aarch64 TARGET_ARCH = $(HOST_ARCH) # 更改了变量 a HOST_ARCH = amd64 debug: @echo $(TARGET_ARCH)
2 :=#
- 立即赋值运算符
- 用于在定义变量时立即求值
- 该值在定义后不再更改
- 即使在后面的语句中重新定义了该变量
示例
HOST_ARCH := aarch64 TARGET_ARCH := $(HOST_ARCH) # 更改了变量 a HOST_ARCH := amd64 debug: @echo $(TARGET_ARCH)
3 ?=#
- 默认赋值运算符
- 如果该变量已经定义,则不进行任何操作
- 如果该变量尚未定义,则求值并分配
HOST_ARCH = aarch64 HOST_ARCH ?= amd64 debug: @echo $(HOST_ARCH)
4 累加 +=#
CXXFLAGS := -m64 -fPIC -g -O0 -std=c++11 -w -fopenmp
CXXFLAGS += $(include_paths)
## 5 \
- 续行符
示例
LDLIBS := cudart opencv_core \ gomp nvinfer protobuf cudnn pthread \ cublas nvcaffe_parser nvinfer_plugin
6 * 与 %#
*
: 通配符表示匹配任意字符串,可以用在目录名或文件名中%
: 通配符表示匹配任意字符串,并将匹配到的字符串作为变量使用