automake依赖关系
问题描述:
我有一个静态库叫libunikey.la
,和一个名为ibus-unikey
的应用程序链接到它。automake依赖关系
的问题是,每当libunikey.la
重建,ibus-unikey
没有重建,所以更改libunikey.la
不承担ibus-unikey
效果。
我希望ibus-unikey
每当libunikey.la
被更改,Makefile依赖性的方式改变(重新链接)。
如何用automake,GNU autotools做到这一点?
_ __ UPDATE __ _ __ _ ___
,使其更简单,真正的问题是: 我如何才能让规则来强制目标是当另一个目标/或者仅仅是一个文件被改变时重新编译?(使用automake)
答
找到了答案我自己,我只是张贴这个答案对于那些在同样的情况:
添加一行Makefile.am:
my_target_LDADD = path/to/the_dependency
它会解决这个问题。
答
我假设你的起始状况是沿着_LDADD = -Lpath/to -lthe_dependency
的行,所以是的,在这种情况下,你通过使用.la
文件的路径来修复它(对于大多数情况)。
但是,最好的选择是使用non-recursive automake
,这样_LDADD
依赖关系在所有情况下都能正确扩展。
也就是说,假设你的二进制文件是在src/
和你的图书馆是lib/
- 如果你当前的工作目录是src
,你在lib
修改的文件,这将不原因要重建的库,和你的二进制重新链接,因为不存在Makefile.am
依赖关系。
可以哟做一个最小的例子,显示这一点?你要求的是默认行为。 – Flexo 2012-02-19 13:24:19
@awoodland:我已经更新了这个问题,请看看。 – perfwill 2012-02-20 11:53:49