Nmake从.cpp文件中获取所有.o文件的列表

时间:2009-12-17 18:32:12

标签: wildcard nmake

我正在使用nmake将多个源文件编译成精灵。但是我不想在像这样的长列表中指定.o文件:

OBJS = file1.o file2.o file3.o

我更喜欢使用通配符来指定当前目录中的所有.o文件作为.elf的依赖项。但是,直到我从.cpp文件编译它们之前,.o文件才存在。有没有办法使用通配符扩展获取cpp文件列表,然后执行字符串替换以将.cpp替换为.o。

3 个答案:

答案 0 :(得分:4)

在NMAKE中没有一种特别优雅的方法。如果可以的话,你应该使用GNU Make,它可以在Windows上使用,并且可以更轻松地完成许多任务。

如果必须使用NMAKE,则必须使用递归make才能自动执行此操作,因为NMAKE仅扩展先决条件列表中的通配符。我在回答另一个类似的问题here时演示了如何做到这一点。

希望有所帮助。

答案 1 :(得分:0)

我对Unix make和gmake比较熟悉,但你可以使用:

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

(假设您的源文件可以在SOURCES中列出)

答案 2 :(得分:0)

Here是另一个可能对您有帮助的答案。

另一个解决方案可能是使用包装器批处理文件,您可以使用“for”循环创建所有.cpp文件的列表,例如

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

之后,您可以尝试在nmake中使用!INCLUDE预处理器宏:

 !INCLUDE listoffiles.txt 

(我相信这不会从头开始,但总的想法应该是明确的。)