(目录)

image.png

makefile简介

  makefile 是一种类似shell的脚本文件,需要make工具进行解释 makefile 内的语句,然后执行内部语句。Makefile的作用是去管理工程项目,比如一个项目有很多c文件,需要利用Makefile去统一进行编译或者其他操作。[1]

相关链接

gnu make 帮助手册 百度百科— make makefile 函数全解 makefile 变量全解

makefile 隐含规则里面的变量

  在隐含规则中的命令中,基本上都是使用了一些预先设置的变量。你可以在你的makefile 中改变这些变量的值,或是在 make 的命令行中传入这些值,或是在你的环境变量中设置这些值,无论怎么样,只要设置了这些特定的变量,那么其就会对隐含规则起作用。当然,你也可以利用 make 的“-R”或“--no–builtin-variables”参数来取消你所定义的变量对隐含规则的作用。

  我们可以把隐含规则中使用的变量分成两种:一种是命令相关的,如“CC”;一种是参数相的关,如“CFLAGS”

1. 关于C/C++命令的变量

AR

函数库打包程序。默认命令是“ar”。

AS

汇编语言编译程序。默认命令是“as”。

CC

C 语言编译程序。默认命令是“cc”。

CXX

C++语言编译程序。默认命令是“g++”

CPP

C 程序的预处理器(输出是标准输出设备)。默认命令是“$(CC) –E”

RM

删除文件命令。默认命令是“rm –f”

$(AR) = ar
$(AS) = as
$(CC) = cc
$(CXX) = g++
$(CPP) = $(CC) -E
$(RM) = rm -f 

2. 关于C/C++命令参数的变量

下面的这些变量都是相关上面的命令的参数。如果没有指明其默认值,那么其默认值都是空

ARFLAGS

函数库打包程序 AR 命令的参数。默认值是“rv”。

ASFLAGS

汇编语言编译器参数。(当明显地调用“.s”或“.S”文件时)。

CFLAGS

C 语言编译器参数。

CXXFLAGS

C++语言编译器参数。

CPPFLAGS

C 预处理器参数。( C 和 Fortran 编译器也会用到)

LDFLAGS

链接器参数。(如:“ld”)

$(ARFLAGS) = 
$(ASFLAGS) = 
$(CFLAGS) = 
$(CXXFLAGS) = 
$(CPPFLAGS) = 
$(LDFLAGS) = 

总结

暂时只有以上使用总结,其他使用可参考帮助文档。

参考链接

gnu make 帮助手册 百度百科— make makefile 函数全解 makefile 变量全解

image.png