簡介:我做了一個叫溫度文件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. 如何在GForth(GNU Forth)的文件名中包含空格?
- 3. 如何在文件中找到包含「空格」的名稱?
- 4. 使用rpm-maven-plugin時,如何在名稱中包含空格的文件?
- 5. 如何下載文件,如果文件名包含空格或%20
- 6. 如何在make依賴文件中包含IBM XLC模板* .c文件?
- 7. 用C#處理名稱中包含空格的文件夾中的文件
- 8. 如何處理包含文件使用空文件名
- 9. 如何使用makefile將.h文件包含在.c文件中
- 10. 在文件名中包含一個帶空格的.tex文件
- 11. 在make文件中包含boost庫
- 12. 如何指定連接字符串,如果excel文件名包含空格?使用c#
- 13. 在DOMXpath中使用查詢不會工作,如果類名包含空格
- 14. 如何在forfiles中包含空格
- 15. 如何在PHP中包含命名空間文件?
- 16. 如何通過使用批處理文件,如果文件夾名稱包含空格
- 17. 包含C++空格的文本文件!
- 18. 如何在命名空間中將C++類包含到Cython中?
- 19. 如何使用名稱中包含空格的表格中的「選擇」語句?
- 20. Make:如何在$(addprefix)中轉義空格?
- 21. 使用Make包含一個.cpp文件
- 22. 如何使用c包含類文件#
- 23. 複製文件:名稱包含空格
- 24. 如何在包含lib的文件名中包含版本號?
- 25. 在使用make構建C++文件時推廣包含語句
- 26. 壓縮文件列表的文件名中包含空格
- 27. 如何檢查文件名包含在C#中的子
- 28. 如何使用exec()函數將PDF文件的文件名中包含空格的PDF文件轉換爲
- 29. 不能使AuthorizeAttribute工作中,如果角色名稱中包含空格
- 30. 如何分隔在VB6中包含空格的路徑名?
顯示您make文件中的relevat線。即做一個[mcve]。 – Yunnosch
可能重複:https://stackoverflow.com/questions/15004278/allow-space-in-target-of-gcc-makefile – teroi
從你沒有一個Makefile的截圖,所以你是什麼'make'ing? –