2012-02-19 203 views
0

我有一个静态库叫libunikey.la,和一个名为ibus-unikey的应用程序链接到它。automake依赖关系

的问题是,每当libunikey.la重建,ibus-unikey没有重建,所以更改libunikey.la不承担ibus-unikey效果。

我希望ibus-unikey每当libunikey.la被更改,Makefile依赖性的方式改变(重新链接)。

如何用automake,GNU autotools做到这一点?

_ __ UPDATE __ _ __ _ ___

,使其更简单,真正的问题是: 我如何才能让规则来强制目标是当另一个目标/或者仅仅是一个文件被改变时重新编译?(使用automake)

+0

可以哟做一个最小的例子,显示这一点?你要求的是默认行为。 – Flexo 2012-02-19 13:24:19

+0

@awoodland:我已经更新了这个问题,请看看。 – perfwill 2012-02-20 11:53:49

回答

0

找到了答案我自己,我只是张贴这个答案对于那些在同样的情况:
添加一行Makefile.am:

my_target_LDADD = path/to/the_dependency 

它会解决这个问题。

1

我假设你的起始状况是沿着_LDADD = -Lpath/to -lthe_dependency的行,所以是的,在这种情况下,你通过使用.la文件的路径来修复它(对于大多数情况)。

但是,最好的选择是使用non-recursive automake,这样_LDADD依赖关系在所有情况下都能正确扩展。

也就是说,假设你的二进制文件是在src/和你的图书馆是lib/ - 如果你当前的工作目录是src,你在lib修改的文件,这将原因要重建的库,和你的二进制重新链接,因为不存在Makefile.am依赖关系。