我想学习如何为我的程序创建包含 3 个文件的基本 Makefile:a.cpp、b.cpp 和 b.h。我将 b.h 包含在 a.cpp 中,并调用一个在此处声明并在 b.cpp 中定义的函数。我浏览了几个 Makefile 教程并想出了一个像这样的 Makefile:
CC=g++
CFLAGS= -std=c++11 -Wall -pedantic -g
SOURCES= a.cpp b.cpp
DEPS= b.h
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=exec
all: $(EXECUTABLE)
@echo Make has finished.
$(EXECUTABLE): $(OBJECTS)
$(CC) $(CFLAGS) $(OBJECTS) -o $(EXECUTABLE)
%.o: %.cpp $(DEPS)
$(CC) $(CFLAGS) -c -o $@ $<
clean:
$(RM) *.o *~ $(EXECUTABLE)
但是,当我创建并运行 exec 时,它并没有按预期工作。编译器不会给出任何警告或错误,但会跳过 a.cpp 中的函数调用,就好像它不存在一样。相反,如果我运行简单的
g++ -std=c++11 -Wall -pedantic -g a.cpp b.cpp -o exec
我的程序按预期运行。显然我在我的 Makefile 中没有做正确的事情,但我不知道是什么。
最佳答案
CC=g++
CFLAGS= -std=c++11 -Wall -pedantic -g
SOURCES= a.cpp b.cpp
DEPS= b.h
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=exec
all: $(EXECUTABLE)
@echo Make has finished.
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) -c $*.cpp
clean:
$(RM) *.o *~ $(EXECUTABLE)
关于c++ - 包含两个 .cpp 文件和一个头文件的基本 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37952230/