nmake makefile没有使用推理规则

时间:2018-06-12 14:19:46

标签: c makefile implicit nmake inference

我试图获得目标的对象依赖关系以使用推理/隐式规则。我得到了这个错误

  

NMAKE:致命错误U1073:不知道如何制作' interface1.obj'   停止。 NMAKE:致命错误U1077:' cd' :返回代码' 0x2'停止。

要调用的最后一个目标是

interface.dll: interface1.obj interface2.obj

我在makefile中有像这样的推理规则

.SUFFIXES: .c .cpp .obj

.c.obj:
      $(CC) $(CFLAGS) $<

.cpp.obj:
      $(CC) $(CFLAGS) $<

我已经尝试在调用.c.obj之后回显测试,它甚至都没有到达那里。在尝试创建interface.obj时似乎无法识别规则 我也试过用这样的路径制作规则

{$(SOURCE_DIR)}.c{$(BIN_PATH)}.obj:
    $(CC) $(CFLAGS) $<

我已经成功创建了一个interface1.obj目标并一次编译一个文件,但我无法获得推理/隐式规则以获得识别和使用。

1 个答案:

答案 0 :(得分:1)

{$(SOURCE_DIR)}.c{$(BIN_PATH)}.obj: 

表示您要制作的对象interface1.obj位于$(BIN_PATH)中。
如果将对象列为interface1.obj,则它将假定interface1.obj在当前目录中。

因此,您需要这样写从属对象文件:$(BIN_PATH)\\interface1.obj

反之亦然,如果它们确实在当前目录中,则可以编写诸如{$(SOURCE_DIR)}.c{}.obj:之类的规则和诸如interface1.obj之类的依赖对象。

源文件也一样。

-Kelsey