1

我正在为 OS X Lion 上的 makefile 苦苦挣扎。我正在尝试使用 % 模式规则将我的所有 .c 文件编译为当前目录中的对象。我正在使用规则:

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

但是make说没有目标。我知道 % 模式是 gMake 的功能,但是 -v 说我已经安装了 GNU make。我也尝试过旧式:

 .cpp.o:
        gcc $^ -o $@

但它是不工作的。我做错了什么?谢谢。

4

1 回答 1

2

如果那是您的整个 Makefile,那么它确实不包含任何目标。调用它make file.o或添加一个虚假目标all,其中列出了您要构建的文件的名称。它可能很简单

.PHONY: all
all: $(patsubst %.cpp,%.o,$(wildcard *.cpp))

你所拥有的是模式规则,它指定“如果你想构建一个类型的目标*.o,这里是如何做到这一点”,但没有指定“这是我们想要构建的文件”的实际目标。

顺便说一句,GNU Make 已经知道如何编译 C 文件,因此您实际上不需要定义它,除非您有特定需要覆盖内置模式规则。

于 2012-08-09T14:00:02.940 回答