Autotools 汽车制造依赖
我有一个名为Autotools 汽车制造依赖,autotools,automake,Autotools,Automake,我有一个名为libunikey.la的static库,还有一个名为ibus unikey的应用程序链接到它 问题是,无论何时重建libunikey.la,都不会重建ibus unikey,因此对libunikey.la的更改不会对ibus unikey生效 我希望无论何时更改libunikey.la,都能像Makefile依赖项那样重建(重新链接)ibus unikey 如何使用automake、GNU autotools实现这一点 \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
libunikey.la
的static库,还有一个名为ibus unikey
的应用程序链接到它
问题是,无论何时重建libunikey.la
,都不会重建ibus unikey
,因此对libunikey.la
的更改不会对ibus unikey
生效
我希望无论何时更改libunikey.la
,都能像Makefile依赖项那样重建(重新链接)ibus unikey
如何使用automake、GNU autotools实现这一点
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
更简单地说,真正的问题是:
当另一个目标/或仅仅是一个文件发生更改时,我如何制定规则强制重新编译目标?(使用automake)我自己找到了答案,只需为处于相同情况的人发布此答案:
在Makefile.am中添加一行:
my_target_LDADD = path/to/the_dependency
它将解决问题。我假设您的初始情况是沿着
\u LDADD=-Lpath/to-lthe\u依赖关系的路线进行的,因此在这种情况下,您可以通过使用.la
文件的路径来修复它(对于大多数情况)
不过,最好的选择是使用,以便在所有情况下正确扩展\u LDADD
依赖关系
也就是说,假设您的二进制文件位于src/
中,而您的库位于lib/
中-如果您当前的工作目录为src
,并且您在lib
中更改了一个文件,则不会导致库被重建,并且二进制文件被重新链接,因为inter-Makefile.am
依赖项不存在。你能举个简单的例子来说明这一点吗?您要求的是默认行为。@awoodland:我已经更新了问题,请看一看。