100分请教高手一个make文件ifeq的问题

karlzheng 2010-03-11 09:29:26
写一个Makefile,如下:

1 myvar = test
2 all:1.c mytarget
3 gcc 1.c -o a.out
4 echo "all"
5 mytarget:
6 $(call myfun)
7
8 define myfun
9 echo "myfun"
10 echo $(CC)
11 ifeq (a,a)
12 Foo = test
13 else
14 Foo = test
15 endif
16 endef

make执行,提示:

echo "myfun"
myfun
echo cc
cc
ifeq (a,a)
/bin/sh: Syntax error: word unexpected (expecting ")")
make: *** [mytarget] 错误 2
Shell 已返回2


请问这个ifeq的写法有什么问题,哪里导致出错?
...全文
509 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoqiang5277 2011-02-11
  • 打赏
  • 举报
回复
看错了,结尾的一个enddef看成了endif了
guoqiang5277 2011-02-11
  • 打赏
  • 举报
回复
最后好像多了一个endif
另外用ifeq的时候是ifeq($(xx),xxx)
leemeng0x61 2010-03-12
  • 打赏
  • 举报
回复
这种用法不支持!
blackbillow 2010-03-12
  • 打赏
  • 举报
回复
不知道楼主要做什么,ifeq是makefile识别的指示符,但这里需要shell识别的指示符,shell不认识ifeq
Easwy 2010-03-12
  • 打赏
  • 举报
回复
try this:

1
2 myvar = test
3 all: mytarget
4 gcc 1.c -o a.out
5 echo "all"
6 mytarget:
7 $(call myfun)
8
9 define myfun
10 echo "myfun";
11 echo $(CC);
12 if [ a == a ]; then \
13 Foo=test; \
14 else \
15 FOO=123; \
16 fi;
17 endef

需要用shell命令,注意行尾的分号及\
steptodream 2010-03-12
  • 打赏
  • 举报
回复
ifeq的用法没错
karlzheng 2010-03-12
  • 打赏
  • 举报
回复
define定义的是命令序列 不知要用ifeq怎么写
karlzheng 2010-03-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 stuarts740 的回复:]
我都是用autotools生成makefile文件的
出现这样的错误一般是源代码出错了
[/Quote]
我这个只是一个空的Makefile,我是为了测试ifeq的条件判断怎么写。。。怎么这么简单的语句也出错。。。惭愧!
熟悉的朋友应该能很快看出错误所在
不知是格式还是什么错
stuarts740 2010-03-12
  • 打赏
  • 举报
回复
我都是用autotools生成makefile文件的
出现这样的错误一般是源代码出错了
blackbillow 2010-03-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zhengkarl 的回复:]
那在Makefile里可以自己定义一个函数吗?
在该函数里能用ifeq这样的语句吗?
[/Quote]
见10L的例子,为什么一定要用ifeq?
karlzheng 2010-03-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 blackbillow 的回复:]

不知道楼主要做什么,ifeq是makefile识别的指示符,但这里需要shell识别的指示符,shell不认识ifeq
[/Quote]
那在Makefile里可以自己定义一个函数吗?
在该函数里能用ifeq这样的语句吗?
karlzheng 2010-03-11
  • 打赏
  • 举报
回复
请高手进来说一说啊
karlzheng 2010-03-11
  • 打赏
  • 举报
回复
楼上三位的回答好像都不解决问题。。。可以在机上试一下
leemeng0x61 2010-03-11
  • 打赏
  • 举报
回复
line 16 endef
?????
freetstar 2010-03-11
  • 打赏
  • 举报
回复
ifeq 完了应该有then的吧
leemeng0x61 2010-03-11
  • 打赏
  • 举报
回复
ifeq [ xx, aa ]

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧