曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3396|回复: 0
打印 上一主题 下一主题

静态库与 $% 符号

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2011-4-20 12:46:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个静态库经常由若干个 *.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 这个成员,而不会全部输出。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-17 23:50 , Processed in 0.081008 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表