轉載於 : http://www.crifan.com/makefile_error_make_no_rule_to_make_target_needed_by_stop/
【已解決】Makefile執行過程中出錯:make: *** No rule to make target ` ‘, needed by xxx. Stop.
【問題】
有個已有的Makefile,執行過程中出錯:
| CLi@PC-CLI-1 ~/develop/docbook/books/python_topic_str_encoding/src |
【解決過程】
1.換到別的,和當前文件夾等價的路徑中去執行,結果卻是正常的:
| CLi@PC-CLI-1 ~/develop/docbook/books/python_topic_str_encoding/src CLi@PC-CLI-1 ~/develop/docbook/books/python_topic_web_scrape/src …… |
2.后來折騰半天,最后終於發現,原來是由於,當前Makefile中的內容是:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# also means main source file name
PROJECT_NAME = python_topic_str_encoding
SUB_SRC_FILES = \
python_topic_str_encoding.xml \
preface.xml \
ch01_2x_vs_3x.xml \
ch02_common_encoding_error.xml \
ch03_other_common_case.xml \
reference.xml \
DOCBOOK_MAKEFILE_ROOT = ../../../config
################################################################################
# Include docbook makefile
################################################################################
include $(DOCBOOK_MAKEFILE_ROOT)/docbook.mk
|
其中,注意到,所依賴的
| reference.xml \ |
后面還有幾個空格的,截圖才能看出來:
導致了此錯誤。
把最后的,多余的空格去掉:
就可以消除此問題了。
【總結】
Makefile在編譯執行過程中,對於所依賴的條件,此處即一堆xml文件,最后一個是reference.xml,結果由於最后reference.xml后面,有多余的4個空格,導致Makefile將該處的4個空格,視為一個文件了,所以,必然找不到該“文件”,所以才報錯的。
所以,如果Makefile出現:
make: *** No rule to make target ` ‘, needed by xxx. Stop.
的錯誤,那么基本上都是屬於找不到所依賴的文件所導致的,所以應該去:
檢測確保,所依賴的文件,是否真實存在。
很可能,很常見的一個現象就是,此處的,誤寫了多余的空格,導致被視為依賴文件,導致找不到,導致報此錯誤。
解決辦法就很簡單,去掉多余的空格即可。


