問題描述:
.
├── Makefile
└── Makefile.sh
file:Makefile
all:
@bash Makefile.sh
file:Makefile.sh
#!/bin/sh
echo "test"
ls -l 查看Makefile 和 Makefile.sh的時間
如果Makefile的時間 >= Makefile.sh的時間,那麼執行make可正常顯示test
test
如果Makefile的時間 < Makefile.sh的時間,那麼執行make失敗。顯示錯誤信息如下:
cat Makefile.sh >Makefile
chmod a+x Makfile
Makefile:3: *** missing separator. Stop.
此時Makefile文件的內容與Makefile.sh相同。我做了如下的實驗:
1、把Makefile.sh腳本重命名爲test.sh,就不會出現上述錯誤。
2、在一個空的目錄下面,只創建一個Makefile.sh,只要執行make就會出現上述錯誤。
小結:
問題的原因出在了shell腳本的命名上。在Makefile的同級目錄下,shell腳本不應該以Makefile命名。
如果命名了Makefile.sh腳本,只要shell腳本的時間大於Makefile的時間,執行make就會出現上述描述的錯誤。
~ end ~ :)