杂记 2011/06/17 -1 Make

14 篇文章 0 订阅
3 篇文章 0 订阅

 

《Linux环境下C语言编程》V2 Chap13 使用Make

 

0. 杂问杂记

command必须以TAB开始!

依赖的东东既是目标也是文件?是否会有某种问题?

一篇GNU Make的完整手册:http://www.linuxsir.org/main/doc/gnumake/GNUmake_v3.80-zh_CN_html/index.html

 

 

1. Makefile主要内容

* 显式规则

* 隐式规则

* 变量

* 文件指示

  include

  条件

  多行命令

* 注释

 

2. 依赖

依赖的东西,似乎既可以是“文件”,也可以是另一个“目标”,如下例:

 

[root@frank linuxc]# cat Makefile
all : HelloWorld
HelloWorld : Hello.c HiThere.c dummy.c
        g++  Hello.c HiThere.c -o HelloWorld

注:dummy.c是一个文件,当它被改变,HelloWorld会被重建,虽然它并不影响HelloWorld的内容。

 

3. Makefile书写规则

* VPATH   Q:What's this ? 2011/12/20

VPATH = src:../headers

 

* vpath关键字of make

例:

vpath %.h ../headers -> 在../headers目录中的所有*.h文件

 

Q:具体如何使用?

 

* 伪目标

.PHONY clean

 

all:prog1 prog2 prog3

       ^ 依赖为“目标”而非文件,而通常情况下,目标与目标产生的文件常常是同样的名字。

 

* 多目标:有何用?

 

 Chap 13, 使用Make

 

1. 隐含规则:链接object文件

 

例:

 

x: x.o y.o

自动推导:

 

cc -c x.c -o x.o

cc -c y.c -o y.o

cc x.o y.o -o x

rm -f x.o

rm -f y.o

 

2. 隐含变量

* 命令

AR
  函数库打包程序,可创建静态库.a文档。默认是“ar”。
AS
  汇编程序。默认是“as”。
CC
  C编译程序。默认是“cc”。
CXX
  C++编译程序。默认是“g++”。
CO
  从 RCS中提取文件的程序。默认是“co”。   Q:What's this ? 2011/12/20
CPP
  C程序的预处理器(输出是标准输出设备)。默认是“$(CC) -E”。
RM
  删除命令。默认是“rm -f”。

 

* 参数

ARFLAGS
  执行“AR”命令的命令行参数。默认值是“rv”。
ASFLAGS
  执行汇编语器“AS”的命令行参数(明确指定“.s”或“.S”文件时)。
CFLAGS
  执行“CC”编译器的命令行参数(编译.c源文件的选项)。
CXXFLAGS
  执行“g++”编译器的命令行参数(编译.cc源文件的选项)。
COFLAGS
  执行“co”的命令行参数(在RCS中提取文件的选项)。
CPPFLAGS
  执行C预处理器“cc -E”的命令行参数(C 和 Fortran 编译器会用到)。

 

3. 隐含规则链

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值