码迷,mamicode.com
首页 > 其他好文 > 详细

makefile实例(1)-helloworld

时间:2014-11-27 00:07:43      阅读:397      评论:0      收藏:0      [点我收藏+]

标签:blog   io   os   使用   sp   文件   on   div   log   

简单makefile实例

1,源文件:

main.cpp

#include <stdio.h>

int main()
{
    printf("Hello World\n");
    return 0;
}

2,编写makefile

若使用g++命令编译链接程序,可以:

g++ -o hello main.cpp

g++ [-o main.o] -c main.cpp

g++ -o hello main.o

若使用make命令,则可以这么编写makefile文件(两种写法分别对应了上面说的两条g++命令):

提示:

2.1,makefile的基本格式为“目标:依赖 命令”
一个 makefile 主要含有一系列的规则,如下:
A: B
(tab)<command>
(tab)<command>
重要: 每个命令行前都必须有tab符号
举例来说,一种简单写法如下:
main : main.c
  gcc main.c –o main
在终端执行make命令就可以得到main文件了

2.2, 这里要说明一点的是,clean不是一个文件,它只不过是一个动作名字,其冒号后面为空,make就不会找文件的依赖性,也就不会自动执行其后所定义的命令。

要执行其后的命令,就需要在make 命令后显式指出这个名字。这样我们就可以定义一些与编译无关的命令:打包程序,清理程序等外围操作等。

 用".PHONY {目标名}"定义一个伪目标, 用"make {目标名}"执行该伪目标
.PHONY : clean
clean :
@rm -f main *.o
@echo ‘clean‘
此时执行make命令,终端会显示系统执行的每条命令,如果你不想系统显示它执行的命令,在每条命令的前面加上“@”即可。

hello : main.cpp
    g++ main.cpp -o hello
clean:
    rm hello main.o -rf

hello: main.o
    g++ -o hello main.o 
main.o : main.cpp
    g++ -c main.cpp 

clean:
    rm hello main.o -rf

 

3,执行make,进行编译链接,

[root@localhost 0-helloworld]#make
g++ -o hello main.o 
[root@localhost 0-helloworld]#ll
总用量 20
-rwxr-xr-x 1 root root 6908 11月 26 22:59 hello
-rw-r--r-- 1 root root   72 11月 26 22:10 main.cpp
-rw-r--r-- 1 root root 1472 11月 26 22:35 main.o
-rw-r--r-- 1 root root  144 11月 26 22:51 makefile

4,执行程序

[root@localhost 0-helloworld]#./hello 
Hello World

5,清理程序

[root@localhost 0-helloworld]#make clean
rm hello main.o -rf
[root@localhost 0-helloworld]#ll
总用量 8
-rw-r--r-- 1 root root  72 11月 26 22:10 main.cpp
-rw-r--r-- 1 root root 151 11月 26 23:02 makefile
[root@localhost 0-helloworld]#

 

makefile实例(1)-helloworld

标签:blog   io   os   使用   sp   文件   on   div   log   

原文地址:http://www.cnblogs.com/jacklikedogs/p/4125317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!