在我的公司,我目前正在創建一個Debian軟件包deb
了一個第三方庫的。該庫使用Autotools構建。我之前從未與Autotools合作過,而且我有些困難。庫源包含configure.in
和Makefile.am
文件和m4/
目錄。我可以用這個順序來構建庫:我多久運行一次autoconf?
aclocal -I m4 -I /usr/share/aclocal
autoheader
libtoolize --automake
automake -a
autoconf
./configure
make
在debian/rules
文件,我想用CDBS。我寫這個:
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk
但它不起作用。它抱怨configure
文件丟失。這是正確的,因爲Autotools類期望這個文件存在。但它不在那裏,有人必須先致電autoconf
和朋友!
爲什麼自動工具CDBS類不讓我叫autoconf
和朋友嗎?我如何繞過它?
題外話:
當我使用一個程序,我不每次編譯它,我曾經編譯和重新使用二進制。
當人們安裝軟件,他們不自己編譯,編譯維護一次,人們重複使用的二進制軟件包。
當維護人員編譯軟件包時,他/她在每次編譯時都不會創建configure
腳本,上游作者創建一次並且維護人員可以重用它。
是最後那句話是真的嗎?因爲對我來說,似乎Autotools CDBS類的作者認爲這樣的事情 - 他們假設存在configure
,並在編譯不同體系結構的包時重用它。我對嗎?
一方面,如果configure
可以生成,它不應該存在任何地方 - 如果你需要它,你從其他文件生成。另一方面,Autotools CDBS類的作者必須有某種理由以這種方式來實現它,而不是另一種。
摘要:
- 我該如何處理與上述自動工具CDBS類的問題?
- 我要隔多久再生
configure
? (一般來說,建設Debian軟件包時。)
但是如果`configure`可以從`configure.ac`和`Makefile.am`生成,我們不應該總是分配後兩個嗎?將`configure`分配給我就像將二進制文件放入存儲庫一樣。 – Jasiu 2009-06-29 20:07:14
GNU構建系統需要`./configure && make && make install`才能解壓縮tarball,因此'configure'腳本應該在tar包中分發。它不是我們想要分發的唯一生成的文件:Makefile.in,Bison生成的解析器,Texinfo文檔都是從其他文件生成的,並且是分佈式的,因此最終用戶不需要安裝工具來重新生成它們。 存儲庫中的內容與用戶tarball中的內容不同。開發人員經常會忽略生成的文件,但是他們的工作是重新生成所有文件。 – adl 2009-07-01 12:37:18