makefile之南大pa使用

(1) ifeq

ifeq(&{a},b)

a的值是否等于b

(2)findstring

${findstring  <find>,<in>}

在in中寻找find

找到了,返回find

否则,返回空

(3)${basename  <names>}

取出name中的前缀

name中有前缀,返回前缀,否则,返回空

(4)include

通过include进行导入的对象是makefile文件

(5)CFLAGS参数有哪些

-c  把源码编译为.o文件,不进行连接

-o 连接生成可执行文件的名称

-g 添加调试信息,可以用gdb调试

-Wall 生成常见警告信息,且停止编译(Warning all)

-w 关闭所有警告信息

-O 编译优化等级(Optimizer)

-l 后边跟目录名,把目录名的文件和当前文件进行连接

-library 连接时在标准搜索目录中寻找库文件,搜索名为liblibrary.a/liblibrary.so

-L后跟目录名,

(6)shell

把执行操作系统命令后的输出作为函数返回,通过生成一个新的shell程序的方式进行操作

(7)call

创建新的参数化的函数

call <expression> <param1>,<param2>将expression中的变量用param1和param2取代

 将reverse中的$(1) 和 $(2) 变为a和b后将reverse的值作为输出即为b,a

(8)=和:=

=左侧:=

对于 = 左侧是变量,右侧是变量的值,可以定义在任何一处,即使是后边的前边的也可以使用。

如果存在a=$(b) 和 b=$(a)就可以陷入到无限的展开中,若是使用了shell和wildcard,由于不知道会被调用多少次,所以会产生程序报错。

对于:=

这种方法的特点是前边的变量不能使用后面的变量,只能使用前边已经定义好的变量

对于@

当我们在命令行前加入@符号时,我们的命令不会被直接make显示出来,否则将会输出

.PHOTY

这表明该程序变量事实上是一个伪目标,换句话说就是别的目标执行之后会产生一系列

中间的程序,然后这个程序则不会产生中间的程序,只是执行动作

(wildcard *.c)

(*.c) 会将变量就变为*.c这三个字符

(wildcard *.c) 会将变量变为所有的.c,也就是这里是正则表达式了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值