QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1272|回复: 8

一个makefile的问题。

[复制链接]
发表于 2004-6-23 16:28:34 | 显示全部楼层 |阅读模式
这是uclinux内核代码的makefile,是最顶层的那个:

ifeq (.config,$(wildcard .config))
include .config
all: subdirs romfs modules modules_install image
else
all: config_error
endif

我想知道,ifeq(.config,$(wildcard.config)) 表示的是什么,我知道ifeq(a,b)是表示if(a==b)。

另:这一句的前面没有相关的操作了,比如,LIBCDIR  = $(CONFIG_LIBCDIR)之类的定义。我在gnu的make说明中也没找到相关说明
,可能是不太仔细。

我编译了一遍,已经通过,生成了rom文件。
发表于 2004-6-23 22:51:28 | 显示全部楼层
http://www.linuxfans.org/nuke/mo ... opic&t=5871麻烦你看看,里面有一模一样的例子。
回复

使用道具 举报

 楼主| 发表于 2004-6-23 23:45:28 | 显示全部楼层
你说的是不是:
makefile 里的函数跟它的变量很相似——使用的时候,你用一个 $ 符号跟开括号,函数名,空格后跟一列由逗号分隔的参数,最后 用关括号结束。例如,在 GNU Make 里有一个叫 'wildcard' 的函 数,它有一个参数,功能是展开成一列所有符合由其参数描述的文 件名,文件间以空格间隔。你可以像下面所示使用这个命令:

      SOURCES = $(wildcard *.c)

      这行会产生一个所有以 '.c' 结尾的文件的列表,然后存入变量 SOURCES 里。当然你不需要一定要把结果存入一个变量。

也就是说SOURCES = $(wildcard .c) 和SOURCES = $(wildcard *.c) 是一样的?
回复

使用道具 举报

发表于 2004-6-24 00:02:22 | 显示全部楼层
还有一个
      ifneg...else...endif 系统是 makefile 里让某一部分码有条件的 失效/有效的工具。 ifeq 使用两个参数,如果它们相同,它把直 到 else (或者 endif ,如果没有 else 的话)的一段码加进 makefile 里;如果不同,把 else 到 endif 间的一段码加入 makefile (如果有 else )。 ifneq 的用法刚好相反。
回复

使用道具 举报

 楼主| 发表于 2004-6-24 08:42:53 | 显示全部楼层
thank you sagaeon!!
回复

使用道具 举报

发表于 2004-6-24 11:38:01 | 显示全部楼层
也不咋懂,只能帮你找找资料  。常来帮帮回答其它社员的问题啊
回复

使用道具 举报

 楼主| 发表于 2004-6-30 11:16:42 | 显示全部楼层
好的。
回复

使用道具 举报

发表于 2006-2-28 09:29:57 | 显示全部楼层
SOURCES = $(wildcard .c) 和SOURCES = $(wildcard *.c) 真的是一样的吗?有没有通配符都可以?谁能给个明确的答复?
即便如此,ifeq (.config,$(wildcard .config)) 的意思依然令人费解,谁能给个明确的解释。
回复

使用道具 举报

发表于 2006-3-6 14:01:11 | 显示全部楼层
查找当前目录下有没有名叫.config的文件,
如果没有在make时就显示出错信息。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 22:31 , Processed in 0.069324 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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