QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1429|回复: 6

这个makefile看不懂,里面似乎有shell编程的东西

[复制链接]
发表于 2005-6-13 18:18:39 | 显示全部楼层 |阅读模式
最前面这个prefix的定义是啥意思啊,没看明白,后面$里面的参数是预定义变量么?谢谢各位


prefix := $(shell rtai-config --prefix)

ifeq ($(prefix),)
$(error Please add <rtai-install>/bin to your PATH variable)
endif

CC = $(shell rtai-config --cc)
LXRT_CFLAGS = $(shell rtai-config --lxrt-cflags)
LXRT_LDFLAGS = $(shell rtai-config --lxrt-ldflags)

all: parlxrtmagma

parlxrtmagma: parlxrtmagma.c
$(CC) $(LXRT_CFLAGS) -o $@ $< $(LXRT_LDFLAGS)

clean:
rm -f *.o parlxrtmagma

.PHONY: clean
发表于 2005-6-14 11:25:13 | 显示全部楼层
PRIFIX是前缀,编译出来的东西放在什么地方/USR或者/OPT等等了,要先试着编译就把它指向你自己的临时目录,别往系统里塞垃圾。如果没问题了再修改到/USR
回复

使用道具 举报

 楼主| 发表于 2005-6-14 13:41:15 | 显示全部楼层
请问这个应该去哪里看,我在makefile的规则中没有找到

按照我的理解,prefix := $(shell rtai-config --prefix)

应该定义了prefix变量,但$(variable)只有在引用变量的时候才使用$符号阿,所以那么里面那个variable应该是一个预定义变量才对,但shell rtai-config --prefix,我不知道是个什么东西,--prefix又代表啥?难道是注释?好像不太可能

ifeq ($(prefix),)
$(error Please add <rtai-install>/bin to your PATH variable)
endif

这句话的意思按道理分析应该是 如果没有定义了prefix,就怎样,但ifeq看字面意思应该是如果相等,不懂

后面倒没啥了,都是makefile的标准规则

谢谢大虾,希望继续指点
回复

使用道具 举报

发表于 2005-6-14 13:50:04 | 显示全部楼层
在shell中有个类似的:
variable=${var:=string}
这个的意思就是如果var非空,则variable=var
如果var为空,则variable=string,并且var=string

ifeq ($(prefix),)
$(error Please add <rtai-install>/bin to your PATH variable)
endif

我的理解是如果没有定义$(prefix),就显示下面的错误信息,根据这个错误信息应该是没有添加rtai-install/bin到你的PATH里面去,因此rtai有关的命令还不可以用!
makefile我还不太懂,不知道我说的是否正确?
回复

使用道具 举报

发表于 2005-6-14 17:50:42 | 显示全部楼层
这个怎么好像是tcsh的语法阿
回复

使用道具 举报

 楼主| 发表于 2005-6-14 17:55:59 | 显示全部楼层
shell rtai-config --prefix,应该指的是调用shell命令,那么--prefix是什么意思?

rtai-config是rtai-install/bin下面的一条命令,我看了一下,好像后面都和这个prefix没啥关系,是不是这一段包括后面那个ifeq就是为了判断有没有把这个路径添加到环境变量PATH中?
回复

使用道具 举报

发表于 2005-6-17 16:05:20 | 显示全部楼层
$(shell )和$(error)都是make中预定义的函数。
前者表示运行一个shell命令,后者表示出现一个错误。
本例中也就是说如果$(prefix)为空(也就是没有定义啦)则出现该函数中后面的那句话。
其他的都没什么问题吧。。。。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-10-3 05:33 , Processed in 0.084290 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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