【问题标题】:automake dependency自动生成依赖
【发布时间】:2012-02-19 13:21:24
【问题描述】:

我有一个名为libunikey.la静态 库和一个链接到它的名为ibus-unikey 的应用程序。

问题是,每当libunikey.la 重建时,ibus-unikey 不会重建,因此对libunikey.la 的更改不会对ibus-unikey 生效。

我希望 ibus-unikeylibunikey.la 更改时重建(重新链接),就像 Makefile 依赖项所做的那样。

如何使用automake、GNU autotools?

___更新_________

为了简单起见,真正的问题是: 当另一个目标/或只是一个文件被更改时,我如何制定规则来强制重新编译目标?(使用 automake)

【问题讨论】:

  • 你能做一个最小的例子来说明这一点吗?您要求的是默认行为。
  • @awoodland:我已经更新了问题,请看一下。

标签: autotools automake


【解决方案1】:

我假设您的起始情况与_LDADD = -Lpath/to -lthe_dependency 类似,所以在这种情况下,您可以通过使用.la 文件的路径来修复它(在大多数情况下)。

不过,最好的选择是使用non-recursive automake,以便_LDADD 依赖项在所有情况下都能正确展开。

也就是说,假设您的二进制文件位于 src/ 中,而您的库位于 lib/ 中 — 如果您当前的工作目录是 src 并且您更改了 lib 中的文件,那不会 strong> 导致库被重建,并且您的二进制文件重新链接,因为不存在 inter-Makefile.am 依赖项。

【讨论】:

    【解决方案2】:

    我自己找到了答案,只需将这个答案发布给那些处于相同情况的人:
    在 Makefile.am 中添加一行:

    my_target_LDADD = path/to/the_dependency  
    

    它会解决问题。

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 2023-04-11
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 2021-01-12
      相关资源
      最近更新 更多