2

考虑以下非常简单的 Makefile:

foo: foo.c
    $(CC) $(CFLAGS) -o $@ $<

以及以下目录结构~/foo

Makefile
foo.c

如何调整 Makefile 以便我可以执行以下操作:

/tmp$ make -f ~/foo/Makefile
cc -o foo /home/me/foo/foo.c

我曾尝试使用$(srcdir),但这似乎是automake特定的。还有其他类似的变量吗?

4

1 回答 1

3

这将做到:

foo: /home/me/foo/foo.c
    $(CC) $(CFLAGS) -o $@ $<

或这个:

foo: foo.c
    $(CC) $(CFLAGS) -o $@ $<

vpath %.c /home/me/foo

或者,如果您不想将路径硬编码到 makefile 中:

foo: foo.c
    $(CC) $(CFLAGS) -o $@ $<

vpath %.c $(dir $(lastword $(MAKEFILE_LIST)))
于 2013-05-08T15:38:04.437 回答