Makefile 使用make创建.o文件

Makefile 使用make创建.o文件,makefile,Makefile,我正在努力学习如何编写makefile。我已经开始阅读gnu make的手册: 我在同一目录中有3个文件: main.cpp:它创建一个矩形并打印一些信息。因此,它包括矩形 h:Rectangle类的头文件 Rectangle.cpp:矩形类的实现 我在main.cpp中包含矩形.h时遇到问题。我的makefile是: main: main.o rectangle.o g++ -o main.exe main.o rectangle.o main.o: main.cpp g

我正在努力学习如何编写makefile。我已经开始阅读gnu make的手册:

我在同一目录中有3个文件:

  • main.cpp:它创建一个矩形并打印一些信息。因此,它包括矩形
  • h:Rectangle类的头文件
  • Rectangle.cpp:矩形类的实现
我在main.cpp中包含矩形.h时遇到问题。我的makefile是:

main: main.o rectangle.o
    g++ -o main.exe main.o rectangle.o

main.o: main.cpp
    g++ main.cpp
rectangle.o: Rectangle.cpp
    g++ Rectangle.cpp
clean:
    rm main.exe main.o rectangle.o
我知道创建main.o时缺少了一些东西,但我无法找到它是什么。我尝试添加矩形.h/.o/.cpp的各种变体,并在internet上查找一些内容,但找不到任何内容

非常感谢您的帮助:)

PS:代码很好,我可以用命令编译它:

g++-o main.exe main.cpp Rectangle.cpp++

当您调用GCC时,它通常进行预处理、编译、组装和链接。“总体选项”允许您在中间阶段停止此过程。例如,-c选项表示不运行链接器。然后,输出由汇编程序输出的对象文件组成


g++main.cpp-c-o main.oUse使用编译器的
-c
选项生成一个目标文件,而不是试图链接一个可执行文件。尼尔就是这么说的,不过解释了一下。还要注意的是,
make
知道如何从
.cpp
(或
.c
)文件创建
.o
文件,而无需您告诉它。您只需删除列出
.o
文件的规则即可。或者保留它们,但在冒号的右侧列出
Rectangle.h
,以指示如果标题更改,则需要重新生成对象文件。但删除了编译规则<代码>制作将提供该功能。另外,您的
main
规则创建的是
main.exe
,而不是
main
。也要解决这个问题。只是要非常清楚:这个问题与make或makefile无关。问题是您放入makefile的编译器调用是错误的。您需要阅读编译器上的文档,了解如何调用它以获得所需的结果。Make不是一个编译器:它是一个用来运行任何类型的程序来更新文件的工具。make可以使用的一种程序类型是编译器,但如何正确运行该程序取决于您。如果您想使用Make,那么Make确实有可以正常工作的内置规则。您或任何人是否可以推荐一本书或一个网站,在其中逐步解释makefile的编写,可能会有代码示例?您可以阅读Make上的GNU手册:。