2009-12-17 116 views
3

我正在使用nmake將多個源文件編譯爲精靈。不過,我不希望在很長的名單像這樣指定.o文件:Nmake從.cpp文件獲取所有.o文件的列表

OBJS = file1.o file2.o file3.o 

我寧願什麼是使用通配符,指定在當前目錄下的所有.o文件的依賴性爲.elf 。但是,.o文件在我從.cpp文件編譯它們之前不存在。有什麼辦法可以使用通配符擴展獲取cpp文件列表,然後使用.o替換.cpp進行字符串替換。

回答

0

我更熟悉UNIX make和gmake,但你可能使用:

OBJS = $(SOURCES:.cpp=.o) 

(假設你的源文件可以在源中列出)

+1

這將工作,但我會有指定.cpp文件列表而不是.o文件列表相同的問題。我的目標是每次添加或刪除源文件時都不必編輯make文件。 – 2009-12-17 18:49:40

0

Here是另一種答案,這可能有助於您。

另一種解決辦法可能是使用包裝的批處理文件,在其中創建所有的.cpp文件的列表,並附有「for」循環,像

del listoffiles.txt 
echo SOURCES= \ >> listoffiles.txt 
for %i in (*.dll) do @echo %i \ >>listoffiles.txt 
echo. >> listoffiles.txt 

之後,你可以嘗試與使用!包括NMAKE預處理宏:

!INCLUDE listoffiles.txt 

(我相信這不會從頭開始工作,但總體思路應該清楚)。

4

在NMAKE中沒有一個特別優雅的方法來做到這一點。如果可以的話,你應該使用GNU Make,它可以在Windows上使用,並且使得許多任務更容易。

如果您必須使用NMAKE,那麼您必須使用遞歸make才能自動執行此操作,因爲NMAKE僅擴展了先決條件列表中的通配符。我演示瞭如何做到這一點,以迴應另一個類似的問題here

希望有所幫助。