2013-08-21 51 views
1

我有一個make文件,並沒有做太多尚未:Make:如何在宏中存儲命令的結果?

SRCS = *FOR 

OBJS = $(SRCS:.FOR=.o) 

tell_srcs: $(SRCS) 
    echo $(SRCS) 

tell_objs: $(OBJS) 
    echo $(OBJS) 

make tell_srcs工作,因爲我希望,在返回

file1.FOR file2.FOR file3.FOR .... 

然而,make tell_objs返回同樣的事情:

file1.FOR file2.FOR file3.FOR .... 

這不是我所期望的也不需要的。

我想問題的關鍵是,make並不是真的在$(SRCS)中存儲*FOR的結果,而是在$(SRCS)中存儲實際的*FOR「命令」,並且我嘗試去替換$ (OBJS)沒有效果......我想。無論如何,有沒有辦法讓$ {SRCS}中的*FOR的實際輸出存儲起來,因此它將作爲一個常規的宏來運行?謝謝。

順便說一句,這裏的版本信息:

>make -v 
GNU Make 3.81 
+0

最好包含'make --version'或'make -v'或者當您查看手冊頁時列出的版本的結果。祝你好運。 – shellter

+0

@shellter - 完成。謝謝。 –

回答

2

試試這個:

SRCS = $(shell echo *FOR) 

OBJS = $(SRCS:.FOR=.o) 

tell_srcs: $(SRCS) 
    echo $(SRCS) 

tell_objs: $(OBJS) 
    echo $(OBJS) 

SRCS = *.FOR套索馬里紅新月會向*.FOR,不* .FOR的外殼膨脹的結果。所以,當OBJS被處理時,它會在*FOR的末尾嘗試更改.FOR。我懷疑你在SRCS中嘗試了*.FOR,並且遇到了OBJS的使用給出*.o或目錄中所有.o文件列表的問題。

make -p可以幫助在這些情況下,雖然我懷疑這種情況下仍然是一個謎。

+0

實際上,當$(OBJS)在依賴項列表中時,我得到的消息 - 我預計 - 預計沒有規則可以生成file1.o等。但是當我把它拿出來的時候,我會得到'file1.o file2.o file3.o ...'這正是我所希望的。謝謝你的提示! –

相關問題