默认情况下使用makefile仅编译对象

时间:2015-04-11 11:38:53

标签: c++ compilation makefile

我正在尝试编写一个makefile来编译并仅从源代码生成目标文件。到目前为止我有这个:

CC=g++
CFLAGS=-c -Wall -std=c++11
SOURCES=$(wildcard *.h)
OBJECTS=$(SOURCES:.cpp=.o)

all: $(OBJECTS)

$(OBJECTS):
    $(CC) $(CFLAGS) $< -o $@

当我打电话时,会打印出来:

make: Nothing to be done for `all'.

显然我犯了一个错误,但我不知道哪一个,因为我在GNU make documentation page中看到了一个非常相似的例子。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

SOURCES=$(wildcard *.h)替换为SOURCES=$(wildcard *.cpp)

$(OBJECTS):
    $(CC) $(CFLAGS) $< -o $@

使用:

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

这意味着每个{file}.o取决于{file}.cpp的存在。