我正在使用nmake將多個源文件編譯爲精靈。不過,我不希望在很長的名單像這樣指定.o文件:Nmake從.cpp文件獲取所有.o文件的列表
OBJS = file1.o file2.o file3.o
我寧願什麼是使用通配符,指定在當前目錄下的所有.o文件的依賴性爲.elf 。但是,.o文件在我從.cpp文件編譯它們之前不存在。有什麼辦法可以使用通配符擴展獲取cpp文件列表,然後使用.o替換.cpp進行字符串替換。
我正在使用nmake將多個源文件編譯爲精靈。不過,我不希望在很長的名單像這樣指定.o文件:Nmake從.cpp文件獲取所有.o文件的列表
OBJS = file1.o file2.o file3.o
我寧願什麼是使用通配符,指定在當前目錄下的所有.o文件的依賴性爲.elf 。但是,.o文件在我從.cpp文件編譯它們之前不存在。有什麼辦法可以使用通配符擴展獲取cpp文件列表,然後使用.o替換.cpp進行字符串替換。
我更熟悉UNIX make和gmake,但你可能使用:
OBJS = $(SOURCES:.cpp=.o)
(假設你的源文件可以在源中列出)
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
(我相信這不會從頭開始工作,但總體思路應該清楚)。
在NMAKE中沒有一個特別優雅的方法來做到這一點。如果可以的話,你應該使用GNU Make,它可以在Windows上使用,並且使得許多任務更容易。
如果您必須使用NMAKE,那麼您必須使用遞歸make才能自動執行此操作,因爲NMAKE僅擴展了先決條件列表中的通配符。我演示瞭如何做到這一點,以迴應另一個類似的問題here。
希望有所幫助。
這將工作,但我會有指定.cpp文件列表而不是.o文件列表相同的問題。我的目標是每次添加或刪除源文件時都不必編輯make文件。 – 2009-12-17 18:49:40