makefile是一个非常简单的helloworld

时间:2014-04-10 04:38:25

标签: c++ makefile

我正在编写我的第一个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;
   }

2 个答案:

答案 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.exemake hello可能就够了 - 如果你愿意的话,可以尝试一下。)