我正在尝试编写一个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中看到了一个非常相似的例子。
非常感谢任何帮助。
答案 0 :(得分:1)
将SOURCES=$(wildcard *.h)
替换为SOURCES=$(wildcard *.cpp)
和
$(OBJECTS):
$(CC) $(CFLAGS) $< -o $@
使用:
%.o: %.cpp
$(CC) $(CFLAGS) $< -o $@
这意味着每个{file}.o
取决于{file}.cpp
的存在。