2012-02-19 314 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依賴關係。