makefile ifeq之坑: 1. syntax error near unexpected token 2. *** missing separator. Stop.

     makefile这东西, 不熟悉的话, 到处是坑, 比如, 该用tab的地方, 你用了空格, 那就呵呵哒了, 新手通常犯这个错误。

     来看看最近遇到的:

all:
	ifeq(hello, hello)
		@echo "yes"
	else
		@echo "no"
	endif

	g++ test.cpp  -lpthread

       执行后, 提示:syntax error near unexpected token, 为什么呢? 因为ifeq不能缩进, 改为:

all:
ifeq(hello, hello)
	@echo "yes"
else
	@echo "no"
endif

	g++ test.cpp  -lpthread

      执行后, 又提示:*** missing separator.  Stop. 为什么呢? 因为ifeq后面需要空格, 改为:

all:
ifeq (hello, hello)
	@echo "yes"
else
	&echo "no"
endif

	g++ test.cpp  -lpthread

      OK了。

      另外, 这种也是不行的:

	@echo "begin"

all:
ifeq (hello, hello)
	@echo "yes"
else
	@echo "no"
endif

	g++ test.cpp  -lpthread

      而这种也不行:

all:
ifeq (hello, hello)
	x:=good
else
	x:=bad
endif

	g++ test.cpp  -lpthread

        提到all外面才可:

ifeq (hello, hello)
	x:=good
else
	x:=bad
endif

all:
	@echo $(x)
	g++ test.cpp  -lpthread

     不多说。

      

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Makefile:1: *** missing separator. Stop.错误中,"missing separator"表示缺少分隔符。这个错误通常发生在Makefile文件的第一行或第一个命令行中。 有几个可能的解决方法可以尝试: 1. 确保使用的分隔符是TAB键而不是空格。在Makefile中,只有命令所在的行才能以TAB开头,其他地方如变量定义、赋值等都不能以TAB开头。如果你的Makefile中使用了空格代替TAB键,将其替换为TAB键即可。 2. 检查Makefile文件的编码格式是否正确。有时候,如果Makefile文件的编码格式不是utf-8,并且带有BOM标记在文件头,会导致这个错误。你可以使用xxd命令查看Makefile文件的编码格式,如果发现是utf-8,并带有BOM标记,可以去掉BOM标记即可。 3. 如果排除了TAB用空格代替的问题和编码格式的问题后,还是存在错误,那么可能是其他问题导致的。你可以检查Makefile文件中的其他语法错误或者其他配置问题。 总结一下解决方法: 1. 确保使用TAB键作为分隔符,而不是空格。 2. 检查Makefile文件的编码格式,确保是utf-8,并且没有BOM标记。 3. 检查Makefile文件中的其他语法错误或配置问题。 希望以上解决方法可以帮助你解决这个错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Makefile missing separator. Stop.怎么解决](https://blog.csdn.net/limanjihe/article/details/52231243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【Linux C++】Makefile:1: *** missing separator. Stop.(亲测已解决)](https://blog.csdn.net/weixin_39626452/article/details/103364523)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值