Makefile 报错 *** 遗漏分隔符 。 停止 与 没有规则可以创建 “XX“ 需要的目标 “XXX”。 停止。

一:遗漏分隔符

先上代码

Target = Client
Object = Client.o ChatClient.o

$(Target) : $(Object)
    gcc $(Object) -o $(Target) -lpthread -lsqlite3

.PHONY:clean
clean:
	rm -rf *.o Client

 

写聊天室项目时,在chatroom目录下新建了一个Makefile 文件,结果报错

百度了很多,有说是 /etc/目录下 vimrc 配置时 空格softtabstop  设置的问题, 应该设置成 8, 空格是逢 8 进一个制表符Tab

于是我将tabstop 设置为 8,报新的错

 足够说明,我虽然按了Tab建,但是系统自动将其变成空格,Tab键并没有输入成功

那么,怎么让Tab键入成功?

解决办法:

1,插入模式:输入 ctrl + v

2,再按下 Tab

检查:ESC回到底行模式, 按 g+ a, 若显示 9,则说明键入成功,如图

但是, 当我将Tabstop再改回 4时, 采用上述方法键入Tab,发现不影响,

 亲自验证,不影响,不论是4 还是 8   

二:没有规则可以创建 “XX“ 需要的目标  “XXX”。 停止。

这个错误犯的就比较 low了,很绝望, 目标文件没有加路径, 

Target = Client
Object = Client1/Client.o Client1/1ChatClient.o

/*Object = /home/chatroom 2.0/Client1/Client.o  /home/chatroom 2.0/Client1/1ChatClient.o
*/   
//绝对路径不能含有空格,不然报错
//make: *** 没有规则可以创建“Client”需要的目标“/home/chatroom”。 停止。

$(Target) : $(Object);
    gcc $(Object) -o $(Target) -lpthread -lsqlite3

.PHONY:clean
clean:
	rm -rf *.o Client

ps 

/*Object = /home/chatroom 2.0/Client1/Client.o  /home/chatroom 2.0/Client1/1ChatClient.o
*/   
//绝对路径不能含有空格,不然报错
//make: *** 没有规则可以创建“Client”需要的目标“/home/chatroom”。 停止。
 

 

 


版权声明:本文为weixin_42720316原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。