我正在尝试创建一个将编译两个文件的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