【发布时间】:2010-12-08 01:24:56
【问题描述】:
我有一个 makefile(使用 nmake 和 VC++ 2005):
CPP_OBJS = $(CPP_SOURCE:.cpp=.obj)
$(TARGET) : $(CPP_OBJS)
$(link) $(ldebug) $(lflags) /DLL \
$(LIBPATHS) \
$out:$@ $(CPP_OBJS) $(conlibs)
问题是链接步骤失败,因为 $(CPP_OBJS) 被扩展到文件列表中,其中每个文件名都带有一个文件夹名称(这样它是从 CPP_SOURCE 生成的)。由于所有 .obj 文件都在当前文件夹中(编译结果) - link.exe 无法找到 .objs。
我需要类似的东西:(我在这里找到它:http://uw714doc.sco.com/cgi-bin/info2html?%28make.info%29File%2520Name%2520Functions&lang=en)
`$(notdir NAMES...)' 提取 NAMES 中每个文件名的目录部分以外的所有内容。 如果文件名不包含斜线,则保持不变。 否则,通过最后一个斜线的所有内容都将被删除。
但是对于 VC++ 2005 附带的 NMAKE,这似乎不起作用。
非常感谢任何解决此问题的想法。谢谢。
【问题讨论】:
-
为什么不使用 GNU make? (gnuwin32.sourceforge.net/packages/make.htm)