我正在使用nmake将多个源文件编译成精灵。但是我不想在像这样的长列表中指定.o文件:
OBJS = file1.o file2.o file3.o
我更喜欢使用通配符来指定当前目录中的所有.o文件作为.elf的依赖项。但是,直到我从.cpp文件编译它们之前,.o文件才存在。有没有办法使用通配符扩展获取cpp文件列表,然后执行字符串替换以将.cpp替换为.o。
答案 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
(我相信这不会从头开始,但总的想法应该是明确的。)