我有一个名为libunikey.la
的静态库,以及一个名为ibus-unikey
的应用程序链接到它。
问题是,每当重建libunikey.la
时,ibus-unikey
都不会重建,因此对libunikey.la
的更改不会对ibus-unikey
生效。
每当ibus-unikey
发生更改时,我希望libunikey.la
重建(重新链接),这与Makefile依赖的方式相同。
如何使用automake,GNU autotools?
_ __ 更新 __ _ __ _ ___
为了简化,真正的问题是: 当另一个目标/或仅仅是一个文件被更改时,如何制定规则强制重新编译目标?(使用automake)
答案 0 :(得分:1)
我假设您的起始情况与_LDADD = -Lpath/to -lthe_dependency
一致,所以在这种情况下,您可以使用.la
文件的路径修复它(对于大多数情况而言)。
但最好的选择是使用non-recursive automake
,以便在所有情况下都能正确扩展_LDADD
依赖关系。
即,让我们说你的二进制文件在src/
,你的库在lib/
- 如果你当前的工作目录是src
并且你在{{}中更改了一个文件1}},不会导致重建库,并且二进制文件重新链接,因为不存在inter lib
依赖项。
答案 1 :(得分:0)
找到自己的答案,只为那些处于相同情况的人发布这个答案:
在Makefile.am中添加一行:
my_target_LDADD = path/to/the_dependency
它将解决问题。