2012-04-28 117 views
2

我想用gummi(http://dev.midnightcoding)使用autogen.sh(http://buildconf.brlcad.org/) .org/projects/gummi),這樣,當我對configure.ac進行更改時,我的修補程序也不必包含對配置的更改。如果我下載了最新版本的橡皮糖源,取下PO/Makefile.in.in,在autogen.sh下降,並運行它,autogen.sh與autogen.sh不會(重新)生成po/Makefile.in.in

Preparing the Gummi build system...please wait 

Found GNU Autoconf version 2.68 
Found GNU Automake version 1.11.1 
Found GNU Libtool version 2.4 

Automatically preparing build ... done 

The Gummi build system is now prepared. To build here, run: 
    ./configure 
    make 

成功完成,但不會生成PO/Makefile文件.in.in。但是,如果我運行intltoolize,則會生成po/Makefile.in.in。查看autogen.sh的來源,表明它有時會運行intltoolize。這是一個在autogen.sh中的錯誤?有沒有configure.ac(或其他文件)應該告訴autogen運行intltoolize的某種方式? intltoolize生成的文件是否應該包含在所有發行版中?

+0

一般來說,避免包含修改生成文件(如配置)的修補程序的最佳方法是*不*將它們保留在版本控制中。 – 2012-04-30 14:02:36

回答

4

是的,如果軟件包使用intltool,autogen.sh應該運行intltoolize。如果沒有,那是一個錯誤。

順便說一下,雖然您使用的腳本自己調用了「the」autogen.sh,但確實沒有一個且唯一的autogen.sh。這只是引導腳本的通用名稱。我更願意寫我自己的,專門針對每個項目。它可以是如此簡單:

#!/bin/bash 
autoreconf --force --install || exit 1 
intltoolize --force || exit 1 

不過,如果你有一個檢測是否intltoolize運行看中autogen.sh,那麼它很可能檢測是否有在configure.ac IT_PROG_INTLTOOL調用。我已經看到了這種情況,但我認爲你沒有這樣做 - 我正在查看Sourceforge here上的最新版本,並且無法在其中的任何位置找到字符串「intltool」。我會說你的autogen.sh與intltool不兼容。

簡而言之:

  • 每個項目應包括其自身的autogen.sh。 (除非你需要準備構建系統的唯一命令是autoreconf。)Gummi不會,所以這是一個錯誤。
  • 沒有像通用autogen.sh那樣的東西。你可以採取現有的方式並複製或修改它,但它完全取決於源程序包需要採取的步驟。