获取libtool库输出文件名

时间:2014-05-20 18:01:10

标签: automake libtool

我试图定义一个Automake规则,该规则将生成一个文本文件,其中包含将由同一个Makefile构建和安装的libtool库的完整路径。是否有一种直接的方法来检索libtool库的输出文件名(正在构建程序的平台的正确扩展名)?

例如,我正在尝试写这样的东西:

lib_LTLIBRARIES = libfoo.la

bar.txt:
  echo $(prefix)/lib/$(libfoo_la) >$@ 

$(libfoo_la)将扩展为libfoo.solibfoo.dyliblibfoo.dll(或其他任何内容),具体取决于平台。这实际上是生成的libtool库文件中dlname参数的值。我可以直接从中提取文件名,但我希望有一种更简单的方法来实现这一点。

1 个答案:

答案 0 :(得分:1)

不幸的是,我没有找到这样做的方法。 幸运的是,对于你来说,我确实有一个小的sed脚本被攻击在一起做得很好 你想要什么,并砍掉它所以它确实做你想要的。

<强> foo.sed

# kill non-dlname lines
/^\(dlname\|libdir\)=/! { d }

/^dlname=/ {

# kill leading/trailing junk
s/^dlname='//

# kill from the last quote to the end
s/'.*$//

# kill blank lines
/./!d

# write out the lib on its own line
s/.*/\/&\n/g

# kill the EOL
s/\n$//

# hold it
h
}

/^libdir=/ {

# kill leading/trailing junk
s/^libdir='//

# kill from the last quote to the end
s/'.*$//

# paste
G

# kill the EOL
s/\n//
p
}

<强> Makefile.am

lib_LTLIBRARIES = libfoo.la

bar.txt: libfoo.la foo.sed
        sed -n -f foo.sed $< > $@