我正在编写我的第一个makefile,它是用于C ++中非常简单的helloworld
我遇到了麻烦,因为这是我的第一个makefile ......永远。
到目前为止,我已经在网上找到了,并且我并没有真正理解其中的任何内容,并查看了很多makefile教程,但大多数人说我不需要一个一个像helloworld一样简单的程序。我也会将我的代码粘贴到底部的hello world。非常感谢任何帮助!!谢谢
Makefile code:
TARGET = hello.exe
OBJECT_01 = hello.o
SOURCE_01 = hello.cpp
$(TARGET): $(OBJECT_01)
gcc -g -o $(TARGET) $(OBJECT_01) -lstdc++
$(OBJECT_01) : $(SOURCE_01) -o $(OBJECT_01)
gcc -g -c $(SOURCE_01) -o $(OBJECT_01)
all : $(TARGET)
clean :
-rm $ (TARGET) $(OBJS)
HELLOWORLD代码:
#include <iostream>
int main()
{
std::cout << "Hello world from me\n ">>
return 0;
}
答案 0 :(得分:3)
首先,改变一下:
$(OBJECT_01) : $(SOURCE_01) -o $(OBJECT_01)
gcc -g -c $(SOURCE_01) -o $(OBJECT_01)
到此:
$(OBJECT_01) : $(SOURCE_01)
gcc -g -c $(SOURCE_01) -o $(OBJECT_01)
其次,改变这个:
std::cout << "Hello world from me\n ">>
到此:
std::cout << "Hello world from me\n ";
第三,这:
clean :
-rm $ (TARGET) $(OBJS)
到这个
clean :
-rm $(TARGET) $(OBJS)
答案 1 :(得分:-1)
您的问题可能是空白。 make
坚持在与构建目标相关联的每一行之前存在一个前导制表符 - 不 空格 - (在每个“gcc”之前应该有一个制表符...“,同样为”-rm ...“),你也缩进了一些构建目标:在所有目标之前应该没有空间或者干净。我不记得它是否真的有必要,但总是在每个目标的':'之后加一个标签。
如何在文件中获取文件中的实际制表符本身就很有趣......当你按Tab键时,某些编辑可能会“跳过”,但实际上是注入了足够的空格以达到下一个倍数 - 8(或任何宽度的配置)列:您可以经常看到差异,使用左右箭头键遍历您希望有一个选项卡的位置,但是一些编辑器将模拟在空间中移动,以便他们可以用空格替换选项卡无论你开始输入什么。我建议您使用一个可重用的通用编辑器,如OSS notepad++,它可以充分控制和查看整个制表符与空格的问题(查看菜单/显示符号/显示空格和TAB)。
最简单的makefile就是:
hello.exe:<tab>hello.cpp
<tab>g++ -g -o hello.exe hello.cpp
clean:
<tab>-rm hello.exe
然后只说make hello.exe
(make hello
可能就够了 - 如果你愿意的话,可以尝试一下。)