zoukankan      html  css  js  c++  java
  • Makefile的学习

    1、 Makefile的定义

    •    ?=若变量未定义,则定义;+=在变量后面追加;:=和=均为赋值符号(其中,=是最基本的赋值,会将Makefile全部展开后决定对应的值,而:=表示变量的值取决于当前在Makefile里面的位置)。
    •  Makefile里面的一些控制语句记得敲空格,想调用shell脚步赋值,可以这样写PWD := $(shell pwd).

              总结:Makefile和sheel脚步有很多类似之处。

    2、 Makefile的规则

        make命令执行时,需要一个Makefile文件,以用来告诉make命令需要怎么样去编译和链接,规则是:

    •    如果这个工程没有编译过,那么所有的c文件都要编译并链接。
    •    如果这个工程的c文件被修改过,那么我们只编译被修改过的c文件,并链接目标程序。
    •    如果这个工程的头文件被改变了,那么我们只需要编译引用这个头文件的c文件,并编译链接。(具体怎么知道头文件修改了,需要在编译时把头文件列出来)

    3、 Makefile的通配符

       wildcard扩展通配符:SOURCE += $(wildcard *.c)获取工作目录下的所有.c55kLTgjDv文件。

       patsubst替换通配符:OBJECTS = $(patsubst %.c,%.o,&(SOURCE)或者OBJECTS = $(SOURCE:%.c=%.o)

       通配符通常发生在以下时刻:

    •    在规则的目标、依赖中的通配符,make在读取Makefile时自动为其进行匹配处理(即展开),规则是由make去管理的。
    •    在规则的命令中的通配符不需要make来操心,它们总是由shell来展开。
    •     除了上面两点之外的其他地方(如变量定义),不能直接使用统配符,只能通过wildcard来达到目的,得到以后就可以用静态模式了。

     4、 Makefile的静态模式

         其中%.c到%.o是通配符转换,其中在实际编码时target可以是不需要的。

  • 相关阅读:
    状态压缩 + 暴力 HDOJ 4770 Lights Against Dudely
    简单几何(推公式) UVA 11646 Athletics Track
    简单几何(四边形形状) UVA 11800 Determine the Shape
    简单几何(求交点) UVA 11437 Triangle Fun
    计算几何模板
    简单几何(相对运动距离最值) UVA 11796 Dog Distance
    简单几何(求划分区域) LA 3263 That Nice Euler Circuit
    覆盖的面积 HDU
    Desert King 最小比率生成树 (好题)
    约会安排 (区间合并)毒瘤题
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309074.html
Copyright © 2011-2022 走看看