忽略Makefile依赖项

时间:2015-01-04 20:18:53

标签: c makefile

我创建了一个简单的makefile来理解它们如何工作的基本思想,并且它没有按照我的预期执行。请参阅以下内容:

test:  test.c
    gcc -o test test.c

我的理解是这应该仅在test.c文件发生更改时运行。问题是它每次都会运行,无论是否有变化。

我注意到当我使用任意目标名称时会发生这种情况。如果我将目标名称设为实际文件名,例如“test.exe”,它可以正常工作,但我看到的所有教程都显示依赖项与任意目标名称一起使用。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

在Windows下,Make会自动将后缀.exe添加到生成的程序中。

由于目标的名称与规则的结果不同,因此Make会尝试再次生成它。

您应该像这样编写makefile:

EXE := test.exe

$(EXE): test.c
    gcc -o $@ $^

如果您需要便携性并且不想重写规则,请使用:

EXE := test

if ($(OS),Windows_NT)
EXE := $(EXE).exe
endif

$(EXE): test.c
    gcc -o $@ $^