Linux笔记——工程管理

一. 工程管理
  1. 工程管理: 顾名思义,是指管理项目中的多个工程文件。
  2. Linux 系统的工程管理:
      
      Linux 系统提供了工程管理工具(make),也叫“自动编译管理器”,
      "自动": 是指make能够根据源文件的时间戳自动发现更新过的
      文件,从而减少编译的工作量

     工程管理工具(make): 是需要通过读取Makefile文件的内容来执行编译工作的;

   3. Makefile 文件:
       可以将Makefile文件视为 make 工具的配置文件。Makefile 中可以指定编译方式,
       也可以指定某些操作动作。

   4. Makefile 文件编写:


      语法格式:
                 目标 :  [依赖]
              命令
       目标:编译生成的文件/指定操作动作名称
       依赖:要生成目标,所依赖的文件  [] 代表可省略
       命令:利用依赖生成目标的操作指令

       特别注意: 命令前必须是一个 Tab 键

      例子:
       readfile :   fread.o
               gcc fread.o -o readfile
       fread.o :   fread.c
               gcc  -c fread.c -o readfile.o

      4.1  Makefile 中的变量
          1)  预定义的变量
           CC   c编译器的名称      默认值   cc
           RM   文件删除程序名称   默认值   rm
           ...
      2)  自动变量
            @ :    代表目标
        < :   代表依赖中的第一个     
        ^ :    代表所有的依赖项
        ...
      3)  自定义变量
            语法格式:    变量名=变量值
                  例子: var=main.c  queue.c 

          变量的引用:  $(变量名)
          
    4.2  Makefile 中的规则:

         1) 隐含规则:
            Makefile 可以根据指定的.o 文件找到所需要的同名源文件,并且
        自动帮我们生成对应的编译语句

        target :  dep.o
            gcc dep.o -o target

            
                target :  dep.o
            gcc dep.o -o target
                /*隐含规则自动生成*/
        dep.o :  dep.c
            gcc -c dep.c -o dep.o

        隐含规则的弊端:
                如果目标是一个动作的名称,此时是不需要依赖的,也不需要任何的编译过程的,

                如果此次存在一个和动作目标同名的源文件,那么根据隐含规则,makefile 就会去
        编译该源文件的,从而会引起混淆。

                解决方案: Makefile 提供了一个关键字: .PHONY  修饰目标,告诉Makefile 对
                   修饰的目标不能采用隐含规则;

               语法规则: 
                                     .PHONY :  目标

                     .PHONY :  clean

        衍生概念: 伪目标 
                    没有依赖的目标
                例子:  clean :
                        rm  *.o

      2)  静态规则
           
               如果我们在生成.o 文件时候,需要额外指定编译选项 (例如 -fPIC), 可以使用
           静态规则;

            OBJS = queue.o main.o  queue.txt

        $(OBJS):%.o:%.c
            $(CC) -c $^ -o $@

            $(OBJS) : 原始列表
        %.o     :  匹配模式 匹配后的内容作为目标
        %.c     :  作为目标的依赖

      
      4.3  Makefile 中的函数使用:

           格式:  $(funcname arg1,arg2...)

       Makefile中常用函数:
        
        1.   wildcard   用于文件匹配的:
             应用举例: 
            SRC = $(wildcard  ./*.c)
        2.   patsubst   用于字符串匹配替换
             格式: patsubst 匹配模式,替换文本,字符串列表

         例子:  RET = $(patsubst %.c,%.o, a.c 1.h b.txt)
         
                  

      

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值