使用 makefile 默认只编译对象
compile only objects by default with 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 中看到了一个非常相似的例子。
如有任何帮助,我们将不胜感激。
替换:SOURCES=$(wildcard *.h)
为 SOURCES=$(wildcard *.cpp)
和:
$(OBJECTS):
$(CC) $(CFLAGS) $< -o $@
与:
%.o: %.cpp
$(CC) $(CFLAGS) $< -o $@
这意味着每个 {file}.o
取决于 {file}.cpp
的存在。
我正在尝试编写一个 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 中看到了一个非常相似的例子。
如有任何帮助,我们将不胜感激。
替换:SOURCES=$(wildcard *.h)
为 SOURCES=$(wildcard *.cpp)
和:
$(OBJECTS):
$(CC) $(CFLAGS) $< -o $@
与:
%.o: %.cpp
$(CC) $(CFLAGS) $< -o $@
这意味着每个 {file}.o
取决于 {file}.cpp
的存在。