曲径通幽论坛

标题: 静态库与 $% 符号 [打印本页]

作者: beyes    时间: 2011-4-20 12:46
标题: 静态库与 $% 符号
一个静态库经常由若干个 *.o 文件组成。静态库成员可以独立的作为一个规则的目标,将库成员作为目标时需要按照如下格式来写:
ARCHIVE(MEMBER)
关于静态库的制作方法可参考:http://www.groad.net/bbs/read.php?tid-957.html

这种书写方式只能出现在规则的目标和依赖文件中,不能出现在规则的命令行中,因为绝大部分的命令不支持有括号一类的写法。这种表达式在规则的目标或者依赖中,它表示库 "ARCHIVE" 的成员 "MEMBER" 。 比如如下写法:
area(you.o):hello(world.o)

如果规则中需要同时制定一个库中的多个成员,那么可以将多个成员罗列在括号内,如:
[Plain Text] 纯文本查看 复制代码
foolib(hack.o kludge.o)

其等价于:
[Plain Text] 纯文本查看 复制代码
foolib(hack.o) foolib(kludge.o)


对于 $% 符号的意思是:
当规则中的目标文件是一个静态库文件时,它代表静态库的一个成员。

示例代码:

area(you.o ok.o):hello(world.o)
           @echo $%
           @echo $@

hello(world.o):world.c
          @gcc -c world.c -o world.o

运行输出:
$ make
you.o
are
$% 只会输出 you.o 这个成员,而不会全部输出。






欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2