我正在尝试创建一个将编译两个文件的makefile:
-main.cpp
-queue.h
在头文件中,我具有模板Queue类的完整实现。主文件包括头文件。

我可以在终端(在Mac上)中输入以下内容来测试此代码:

g++ -c main.cpp
g++ -o queue main.o


而且我可以毫无问题地运行程序(./queue)。

现在,对于该项目,只需在终端中键入“ make”即可进行编译。
在以前的项目中,我使用了以下内容:

all: sDeque

sDeque: sDeque.o sDeque_main.o
    g++ -o sDeque sDeque.o sDeque_main.o

sDeque.o: sDeque.cpp sDeque.h
    g++ -c sDeque.cpp

sDeque_main.o: sDeque_main.cpp sDeque.h
    g++ -c sDeque_main.cpp
clean:
    rm sDeque sDeque.o sDeque_main.o


但是上面的示例具有main.cpp,sDeque.cpp和sDeque.h。这是可行的,因为我可以创建目标文件,但是我认为我不能仅从头文件创建目标文件。

对于手头的任务,我只有主文件和头文件(因为它是模板类)。
如何为此制作文件?

最佳答案

# All the targets
all: queue

# Dependencies and rule to make queue
queue: main.o
    g++ -o queue main.o

# Dependencies and rule to make main.o
main.o: main.cpp queue.h
    g++ -c main.cpp

clean:
    rm queue main.o

10-01 23:12