gpt4 book ai didi

c++ - 包含两个 .cpp 文件和一个头文件的基本 Makefile

转载 作者:行者123 更新时间:2023-11-30 02:31:18 24 4
gpt4 key购买 nike

我想学习如何为我的程序创建包含 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com