makefile

作者: Jack_Cui | 来源:发表于2018-11-05 17:30 被阅读0次

makefile

  • 借此机会重新复习下gcc编译条件

    • 命令 -E 预处理命令 生成 .i 预处理的原始程序
          -S 翻译成汇编 生成 .s 汇编文件
          -c 汇编转换为二进制文件 生成.o 二进制文件
      -o 指定生成文件的名字
  • makefile文件是区分大小写的

  • 最简单的版本 第一版本
    make:
     g++ -o a.o -c a.cpp
     g++ -o b.o -c b.cpp
     g++ -o main.o -c main.o
     g++ -o test a.o b.o main.cpp
    clean:
     rm -rf a.o b.o main.o

  • 第二版本 用变量去替换
    cc = g++
    make:
     $(cc) -o main.o -c main.cpp
     $(cc) -o a.o -c a.cpp
     $(cc) -o b.o -c b.cpp
     $(cc) -o test a.o b.o main.o
    clean:
     rm -rf a.o b.o main.o

  • 第三版本
    版本3可以在每次编译的事后只编译修改过的文件 节省时间
    采用依赖的方式
    start:
     $(cc) -o test a.o b.o main.o
    a.o:
     $(cc) -o a.o -c a.cpp
    b.o:
     $(cc) -o b.o -c b.cpp
    main.o:
     $(cc) -o main.o -c main.cpp
    clean:
     rm -rf a.o b.o main.o

  • 第四版本

将编译条件改为变量 这样如果以后要修改编译条件的话只需要修改一个地方就可以了

这里也是和上面一样

SRSC 表示源文件

OBJS表示.o文件

OBJS = $(SRCS:.cpp=.o) 把所有的源文件.cpp替换为.o

vpath: 用这种方式来确认文件所在的文件位置
其表示“.c”结尾的文件,先在“foo”目录,然后是“blish”,最后是“bar”目录

  • 其中添加了boost编译选项
    @ 表示目标文件^ 表示所有的依赖文件
    < 表示第一个依赖文件? 表示比目标还要新的依赖文件列表

vpath %.cpp /root/NewFrameTest/Source
vpath %.h /root/NewFrameTest/Head
LDDIR = -lboost_system -lboost_thread
CC = g++ 

SRCS =AsyncSerial.cpp\
        EtcStatus_B0.cpp\
        EtcStatus_B4.cpp\
        EtcStatus_C0.cpp\
        SendDate.cpp\
        SerialTransceiver.cpp\
        BufferedAsyncSerial.cpp\
        EtcContext.cpp\
        EtcStatus_B2.cpp\
        EtcStatus_B5.cpp\
        EtcStatus_Init.cpp\
        MsgQueue.cpp\
        Serial.cpp\
        STLogger.cpp\
        EtcManager.cpp\
        EtcStatus_B3.cpp\
        EtcStatusBase.cpp\
        main.cpp\
        NothingSerialize.cpp\
        Serialize.cpp\
        TcpTransceiver.cpp


OBJS = $(SRCS:.cpp=.o)
EXEC = test


make:$(OBJS)
        #$(CC)  -o $(EXEC) $(OBJS) -lboost_system -lboost_thread
        $(CC)  -o $(EXEC) $(OBJS) $(LDDIR)                                                                                                                                                                  
.cpp.c:
        $(CC) -o $@ -c $<
clean:
        rm -rf $(OBJS)

相关文章

  • 编写Makefile及简单分析

    makefile的好处:一次编写,终身受益 makefile的命名规则: makefile Makefile ma...

  • Makefile 工程管理

    Ⅰ Makefile的用途 Ⅱ Makefile的构成 Ⅲ Makefile构成-----规则 Ⅳ Makefil...

  • win_c/c++ mess01

    1. win makefile 1.1 win makefile,eg: 1.2 makefile explai...

  • [C] Makefile

    Makefile Blog [Makefile的简便写法] [Makefile]菜鸟教程 [gcc编译声明问题] ...

  • 迅为IMX6ULL开发板Ubuntu下C编程入门(二)

    本文是介绍3.3 初识 Makefile+3.4Makefile语法 3.3初识Makefile 3.3.1什么是...

  • Make

    make 目标 顶层 Makefile 作为入口, 来调用其他 makefile, 顶层 makefile 一般有...

  • Makefile学习笔记

    Makefile学习笔记 学习Makefile的资料 《跟我一起写makefile》 《GUN make manu...

  • Linux Kernel Makefiles特殊符号

    Makefile基本规则: Makefile文件中可使用特殊的符号简化Makefile文件的书写。 1、$@:表示...

  • makefile入门一

    Linux下Makefile详解 下面就来看如何写Makefile文件:Makefile文件编写规范: 下来看事例...

  • Makefile

    Makefile for boot Makefile Makefile对格式有要求:每一行文本除非顶头开始,如果需...

网友评论

    本文标题:makefile

    本文链接:https://www.haomeiwen.com/subject/kuasxqtx.html