简介:我做了一个叫温度文件2.C,当我使用终端“制作”的文件,它会返回一个错误:make: *** No rule to make target 'temperature 2'. Stop.
Terminal output screenshot
这是I型进入终端窗口。
make temperature\ 2
版本信息:我使用的MacOS 10.12.5与苹果LLVM版本8.1.0(铛-802.0.42)
版本的Xcode 8.3.2(8E2002)
附加信息:我使用make "temperature 2"
有人认为它适用于Windows尝试,但它不工作在Mac上。
我选择在终端窗口中正确的目录和我能够完美地编译所有其他文件。
Screenshot of the file
我知道的事实,我可以简单地更换空间与强调来解决这个问题,但我想知道这是为什么首先发生。
终端工作正常处理有一个空间在他们的名字其它目录(使用反斜杠),那么为什么是不是在这种情况下工作?
在此先感谢。如果文件名中包含空格,如何在C中使用'make'?
回答
将命令提供给shell,将它们作为命令执行。如果你有这样一行:
.c.o:
$(CC) $(CFLAGS) -c -o [email protected] $<
当您尝试做
make "some thing".o
它会尝试找到一个名为“有些东西文件。c”和将执行
cc -c -o some thing.o some thing.c
这是尝试编译一些这三个文件thing.o
,some
和thing.c
但是,如果你改变了规则
.c.o:
$(CC) $(CFLAGS) -c -o "[email protected]" "$<"
会喂外壳与此
cc -c -o "some thing.o" "some thing.c"
that will p导致正确的行为。
的Makefile
.c.o:
$(CC) $(CFLAGS) -c -o "[email protected]" "$<"
采样运行(在FreeBSD系统):
$ make "the problem.o"
cc -O -pipe -c -o "the problem.o" "the problem.c"
当调用做,它需要你有一个Makefile,快速和简单的文件C程序,
尝试
gcc -o "temperature 2" "temperature 2.c"
或
clang -o "temperature 2" "temperature 2.c"
你的化妆明确地告诉你与:
make: *** No rule to make target 'temperature 2'. Stop.
我不想使用gcc或clang,然后使用./a.out。我只是试图使用'make'命令来获得结果 –
我想在* NIX系统上使用make,那么必须有一个Makefile来告诉做什么。见[如何编写一个Makefile来编译一个简单的C程序](https://stackoverflow.com/questions/21548464/how-to-write-a-makefile-to-compile-a-simple-c-program) – Danny
我想补充一点,'make'正在处理所有其他文件。如果我将名称从'temperature 2'更改为'temperature_2' –
制作带有几个内置的规则,但他们不会进行设计,以应付在文件名称中使用空格或其他“不寻常”的人物,所以你需要编写覆盖他们一个Makefile文件或更改文件名。
此规则是您正在使用的规则 - 必须在目标文件[email protected]
和输入文件$<
周围加上引号。
%: %.c
$(CC) $(CFLAGS) -o "[email protected]" "$<"
谢谢,它解决了我的查询。尽管我已经添加了另一个使用部分答案的答案 –
只有一个引用:您发布的语法仅在GNU make *中有效*,这不是Mac OSX中可用的语法(它是从BSD派生的语法让我害怕) –
看看你的答案,我实际上隐约记得现在你提到它的语法。看起来GNU make仍然可以识别它:O –
- 1. 如果文件名包含空格,我们如何使用URLConnection在android下载?
- 2. 使用rpm-maven-plugin时,如何在名称中包含空格的文件?
- 3. 如何下载文件,如果文件名包含空格或%20
- 4. 如何在make依赖文件中包含IBM XLC模板* .c文件?
- 5. 用C#处理名称中包含空格的文件夹中的文件
- 6. 在文件名中包含一个带空格的.tex文件
- 7. 如何使用makefile将.h文件包含在.c文件中
- 8. 在make文件中包含boost库
- 9. 如何指定连接字符串,如果excel文件名包含空格?使用c#
- 10. 包含C++空格的文本文件!
- 11. 如何使用名称中包含空格的表格中的“选择”语句?
- 12. 如何在命名空间中将C++类包含到Cython中?
- 13. Make:如何在$(addprefix)中转义空格?
- 14. 如何在包含lib的文件名中包含版本号?
- 15. 在使用make构建C++文件时推广包含语句
- 16. 如何使用exec()函数将PDF文件的文件名中包含空格的PDF文件转换为
- 17. 如何检查文件名包含在C#中的子
- 18. C#/ .NET如何从类名中找到包含名称空间
- 19. 如何在next()中包含空格而不使用nextLine()in Java
- 20. 如何在Objective C中搜索包含空格的字符串?
- 21. 如何在C#中使用ProcessStartInfo启动名称包含逗号的文件夹?
- 22. 如何在NSRegularExpression中同时包含空格和非空格?
- 23. 如何读取名称中包含空格和特殊字符的文件?
- 24. 如果路径中包含空格,则Zip中的文件的URI不正确
- 25. 如何使用包含空格的枚举项目名称?
- 26. 推迟包含在make中
- 27. 如何使用lxml将名称空间包含到xml文件中?
- 28. 在C++中包含文件
- 29. 如何防止在mySQL中输入包含空格的文本
- 30. 如何用名称中的空格在python中导入文件?
显示您make文件中的relevat线。即做一个[mcve]。 – Yunnosch
可能重复:https://stackoverflow.com/questions/15004278/allow-space-in-target-of-gcc-makefile – teroi
从你没有一个Makefile的截图,所以你是什么'make'ing? –