zoukankan      html  css  js  c++  java
  • [zz]makefile写法简单示例

    实例1:
    OBJ = a.o b.o main.o H = a.h b.h DBG = -g main : $(OBJ) gcc $(OBJ) $(DBG) -o main %.o : %.cpp $(H) g++ -c $< -o $@


    实例2:

    作为Linux或Unix下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般开发情况下,大家都是手工写一个简单Makefile。下面先给一个最简单的示例代码:

    #makefile示例
    object= main.o function.o

    change:$(object)
    cc -o change $(object)
    mv change $(HOME)/bin
    main.o:
    cc -c main.c -I$(HOME)/program/date/include
    function.o:
    cc -c function.c -I$(HOME)/program/date/include

    clean:
    rm change $(object)
    说明:
          这里是使用unix下的CC编译器,当然也能换成gcc
          最后生成的可执行文件名:change
          源程序文件:main.c function.c
          .h文件(头文件)所在目录:$(HOME)/program/date/include
          中间目标文件名:main.o function.o
         当在shall中执行命令:
    make clean
    将会执行
    rm change $(object)
    删除文件: change main.o function.o
    语句:
    mv change $(HOME)/bin
    将最终生成的可执行文件移动到
    $(HOME)/bin
    这一步可以不要,但这样符合目录管理规范,而且$(HOME)/bin一般在环境变量PATH中有设置,这样可以在任意目录下时也能运行可执行文件。

    注意:
          makefile编辑时另起一行,注意不能用空格,要用TAB键,否则会报错
          makefile里面的注释用#,其它都会报错

    Makefile简单介绍
    Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中纪录有文件的信息,在make时会决定在链接的时候需要重新编译哪些文件。
    Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。
     
    实例3:
    .PHONY: all clean
    
    all : main
    
    main : main.o a.o b.o
    \TAB\ g++ -o main main.o a.o b.o
    
    main.o : main.cpp b.h
    \TAB\ g++ -o main.o -c main.cpp
    
    a.o : a.cpp a.h
    \TAB\ g++ -o a.o -c a.cpp
    
    b.o : b.cpp b.h a.h
    \TAB\ g++ -o b.o -c b.cpp
    
    clean:
    \TAB\ @rm -f a.o b.o main.o main
  • 相关阅读:
    数据结构—堆排序
    关于《数据结构》课本KMP算法的理解
    KMP字符串匹配算法
    POJ 3784 Running Median(动态维护中位数)
    C++ STL 全排列
    数据结构——哈夫曼(Huffman)树+哈夫曼编码
    算法与数据结构实验6:逆序对(归并排序)
    C++ STL 优先队列 priority_queue 详解(转)
    现在和未来
    Karen and Coffee CF 816B(前缀和)
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2466206.html
Copyright © 2011-2022 走看看