2016-08-02 76 views
1

makefile中存档中的目标成员名称是什么?什么是makefile中的归档目标成员名称?

这里解释:https://www.gnu.org/software/make/manual/html_node/Archive-Members.html#Archive-Members 但我不太明白,因为没有一个简单的例子。

如果我有

target(name): name 
     echo $% 

$%是目标名称的自动变量。

如果我使用make target,这将无法运行

为什么呢?什么是“目标会员名称”?

+0

你明白,这是在谈论'ar'文件,对吧? – tripleee

+0

“如果我使用make target,它不会运行”没有制定target的规则,您还需要'target:target(name)',尽管通常archives有一个'.a'后缀,所以可能' target.a:target.a(name)'。 – user657267

回答

1

您连接的文档在开头附近具体解释了这一点。

此构造仅适用于目标和先决条件,不适用于食谱!您可能在配方中使用的大多数程序都不支持此语法,因此无法直接对存档成员执行操作。只有ar和专门设计用于档案操作的其他程序才可以这样做。因此,更新档案成员目标的有效配方可能必须使用ar

因此,例如,以产生ar归档称为target含有name,命令将是

touch name 
ar cr target name 

作为Makefile,这是

target: name 
    ar cr [email protected] $^ 

name: 
    touch name 

target(name)语法时有用你想操作target内部的name副本。例如,如果name在某个时间点被重建,则您的Makefile可能希望将其日期戳与成员的日期戳比较,以确定是否需要更新target中的副本。

target(name): name 
    ar cr [email protected] $% 

但是,这并没有指定如何创建target摆在首位;据我所知,你需要一个类似于我的例子顶部的配方。

+0

任何有效的例子?我其实需要一些有效的东西 – Thenewstockton

+0

从你的问题中你不清楚你在找什么。什么目前不起作用? – tripleee

相关问题