默认情况下,仅使用生成文件编译对象

compile only objects by default with makefile

本文关键字:文件 编译 对象 情况下 默认      更新时间:2023-10-16

我正在尝试编写一个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制作文档页面中看到了一个非常相似的例子。

任何帮助将不胜感激。

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

和:

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

跟:

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

这意味着每个{file}.o都依赖于{file}.cpp的存在。