OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4121|回复: 3

请教一下关于Makefile的问题

[复制链接]

31

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2016-6-5
在线时间
53 小时
发表于 2020-7-21 23:28:21 | 显示全部楼层 |阅读模式
1金钱
在makefile中:

CROSS_COMPILE ?= arm-linux-gnueabihf-
NAME                 ?= ledc



CROSS_COMPILE := arm-linux-gnueabihf-
NAME                 := ledc

赋值符“:=”和赋值符?=”这两个的区别,我将例程中的[size=14.6667px]“?=[size=14.6667px]”修改为[size=14.6667px]“:=[size=14.6667px]”,下载进程序后led灯还是能闪烁,从从实际效果来看,这两个赋值符没有区别!
[size=14.6667px]

赋值符“:=”, 赋值符“:=”不会使用后面定义的变量,只能使用前面已经定义好
值符“?=”, 如果变量在“?”前面没有被赋值,那值就为等号后面的值,如果前面已经赋过值了,那么就使用问号前面赋的值。


在这里这两个赋值符是可以互换的吗?请大佬详细解释一下,才学真的很懵!

最佳答案

查看完整内容[请看2#楼]

有差别的。你只是在一个简单的驱动文件的Makefile里运用到他两,整个Makefile语法简单,用他两的哪一个都一样的。但是,你要是在大型项目中用到Makefile的话,那就不一样了,例如内核源码里的Makefile有一句 ARCH ?= $(SUBARCH),如果再他前面有添加ARCH:=XXX,那么ARCH ?= $(SUBARCH)这句就无法再赋值了,他两的实际作用不一样的,在这里他两当然不能互换了。 。他两使用上的区别是: := 是覆盖之前的值,例如: a=1; a:= ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2020-7-21 23:28:22 | 显示全部楼层
本帖最后由 仰望星空之云 于 2020-7-29 09:28 编辑

有差别的。你只是在一个简单的驱动文件的Makefile里运用到他两,整个Makefile语法简单,用他两的哪一个都一样的。但是,你要是在大型项目中用到Makefile的话,那就不一样了,例如内核源码里的Makefile有一句 ARCH ?= $(SUBARCH),如果再他前面有添加ARCH:=XXX,那么ARCH ?= $(SUBARCH)这句就无法再赋值了,他两的实际作用不一样的,在这里他两当然不能互换了
。他两使用上的区别是:
:= 是覆盖之前的值,例如:
a=1;
a:=2;
最后a=2,:=就相当于=

?= 是如果没有被赋值过就赋予等号后面的值
例如:
a:=1;
a?=2;
最后a=1而不是2

关于Makefile的相关语法,可以上网查询,或者可以看看  正点原子的开发板光盘A-基础资料\4、参考资料\《跟我一起写Makefile》了解一下
1.png

回复

使用道具 举报

31

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2016-6-5
在线时间
53 小时
 楼主| 发表于 2020-7-25 16:58:12 | 显示全部楼层
什么鬼,莫得人吗?
回复

使用道具 举报

31

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2016-6-5
在线时间
53 小时
 楼主| 发表于 2020-7-26 22:13:32 | 显示全部楼层
仰望星空之云 发表于 2020-7-21 23:28
有差别的。你只是在一个简单的Makefile里运用到他两,整个Makefile语法简单,用他两的哪一个都一样的。但是 ...

你这不是跟没说一样吗!感觉这次原子做的好水啊,视频好多错误,好些东西都没有讲明白!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表