LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1373|回复: 4

这个makefile看不懂,能不能给解释一下,里面似乎有shell编程

[复制链接]
发表于 2005-6-13 18:19:51 | 显示全部楼层 |阅读模式
最前面这个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 09:18:13 | 显示全部楼层
$(shell rtai-config --prefix)应该相当于`shell rtai-config --prefix`
prefix:=$(shell rtai-config --prefix)好像是如果prefix存在且非空就返回它原来的值,否则将它的值设为shell rtai-config --prefix的结果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-14 13:43:02 | 显示全部楼层
请问这个应该去哪里看,我在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:52:27 | 显示全部楼层
请问这个应该去哪里看,我在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 18:09:22 | 显示全部楼层
去看一下SHELL。
里面的 $(cmd) 是正确的。

相等是因为它等于空了。所以就是没有定义了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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