我喜歡從perlscript創建一個c
和h
文件。所以我創建了以下規則:makefile創建來自perlscript的c和h文件
abc.[ch]:
@perl makestrings abc
我得到這個錯誤信息:
File `abc.h' does not exist.
當我使用的規則abc.h:
它會奏效。 我想我有一個問題,c
文件不包括在內。所以我需要重新啓動時,創建abc.h
或abc.c
。
我喜歡從perlscript創建一個c
和h
文件。所以我創建了以下規則:makefile創建來自perlscript的c和h文件
abc.[ch]:
@perl makestrings abc
我得到這個錯誤信息:
File `abc.h' does not exist.
當我使用的規則abc.h:
它會奏效。 我想我有一個問題,c
文件不包括在內。所以我需要重新啓動時,創建abc.h
或abc.c
。
abc.[ch]
是abc.c
或abc.h
的通配符。但它是一個通配符,也就是說,如果文件不存在,它會擴展爲字符串abc.[ch]
(不是你想要的)。如果只有一個存在,它會擴展爲這個(不是你想要的)。你可以嘗試這樣的:
.PHONY: abc_ch
abc_ch: abc.c abc.h
abc.c abc.h:
@perl makestrings abc
你Makefile
是正確的,但你應該添加一個加規則。
abc.o: abc.c abc.h
${CC} -o abc.o abc.c
在這種情況下abc.o
需要abc.c
和abc.h
也因此make
將創建abc.c
和abc.h
第一和之後嘗試建立abc.o
。
A plus建議:我會添加一個依賴abc.[ch]
:makestrings
perl腳本。也可能是makestrings
使用的其他文件。
'perl makestrings abc'是否正常工作?用簡單的腳本對我來說效果很好。 – uzsolt
是的,劇本運作良好。創建'abc.h'和'abc.c'。但是,如果make嘗試編譯'abc.o',它會失敗,因爲雖然它是由腳本創建的,但找不到abc.c。它似乎使coudln't找到它擺在首位。 – Chris
啊,理解。你沒有說你想從'abc.c'和'abc.h'創建'abc.o'。看到我的答案! – uzsolt