make常用命令
make -f
执行 make 命令时,它会去当前目录下查找名为Makefile 的文件,可以使用**-f** 选项指定文件,不再使用名为Makefile的文件
make -C
可以使用**-C**选项指定目录,切换到其他目录里去
make变量赋值
自动变量
bash
$@:代表当前规则的目标文件名
$<:代表第一个依赖文件的文件名
$^:代表所有依赖文件的列表,去重后按顺序列出
$?:依赖项中,所有比目标文件时间戳晚的依赖文件,依赖文件之间以空格分开
$*: 表示目标文件的名称,不包含目标文件的扩展名
$+: 表示所有的依赖文件,这些依赖文件之间以空格分开,按照出现的先后为顺序,其中可能 包含重复的依赖文件
预定义变量
bash
-I<directory>:指定头文件搜索路径
-L<directory>:指定库文件搜索路径。
-l<library>:链接指定的库,例如 -lm 链接数学库
AR 生成静态库库文件的程序名称 ar
AS 汇编编译器的名称 as
CC C 语言编译器的名称 cc
CPP C 语言预编译器的名称 $(CC) -E
CXX C++语言编译器的名称 g++
RM 删除文件程序的名称 rm -f
ARFLAGS 生成静态库库文件程序的选项 无默认值
ASFLAGS 汇编语言编译器的编译选项 无默认值
CFLAGS C 语言编译器的编译选项 无默认值
CPPFLAGS C 语言预编译的编译选项 无默认值
CXXFLAGS C++语言编译器的编译选项 无默认值
FFLAGS FORTRAN 语言编译器的编译选项 无默认
CFLAGS := -Wall -O2 -g
CFLAGS += -I $(shell pwd)/include
export LDFLAGS="-L/path/to/lib -lmylib"
gcc $CFLAGS -o output input.c $LDFLAGS
**CFLAGS
**是用于设置 C/C++ 编译器选项的环境变量。它可以用来指定编译过程中的各种选项,如优化级别、警告级别、头文件包含路径等。
LDFLAGS
是用于设置链接器选项的环境变量。它可以用来指定链接过程中的各种选项,如库路径、库文件等。