Jak vyrobit skript configure zkontroluje závislosti

hlasů
3

generované jsem skript configure s autoconf stavět svůj projekt.

To funguje dobře, pokud nemám nainstalován některé potřebné knihovny. Udělat chybu vrátí, pokud chybí některé soubory, ale to by mělo být ve skutečnosti kontroluje configure skriptu myslím, že?

Takže moje otázka zní: Jak upravit autoconf vygenerovaný skript usilovat o závislostech a sdělit uživateli, který knihoven chybí?

Položena 15/06/2009 v 17:43
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
4

Závisí na závislost, není generický řešení.

Existují AC_CHECK_LIBi AC_SEARCH_LIBSmakra , které mohou pracovat pro vás, pokud knihovny a hlavičkové soubory jsou instalovány ve standardních umístěních.

Mnoho balíčků v současné době podporuje pkg-config, nebo něco podobného, který vám umožní kontrolovat existenci knihoven, a také můžeme dodat vám překladač a linker vlajky potřebné.

S balíčky, které nepracují s AC makra a nepodporují pkg-confignebo podobně, pravděpodobně budete muset psát tuny skriptů sami zjistit, zda je k dispozici závislost a jaké kompilátor a možnosti spojovací to vyžaduje. A dokonce i pak je to těžké, aby to přenosné.

Odpovězeno 15/06/2009 v 18:11
zdroj uživatelem

hlasů
2

Ano, chcete provést kontrolu v době konfigurovat. Hůl kód například následující ( díky Shlomi Fish ) ve vaší configure.ac:

if test "x$requires_libavl" = "xyes" ; then
    AC_CHECK_LIB(avl, avl_create, [], [
        echo "Error! You need to have libavl around."
        exit -1
        ])
fi

Všimněte si, že pokud máte pre-2.5 autoconf, budete používat configure.inmísto.

Odpovězeno 15/06/2009 v 18:04
zdroj uživatelem

hlasů
1

To, jak jsem to udělal v minulosti, je napsat triviální program, který buď táhne v nezbytném souboru záhlaví, nebo odkazy na potřebnou knihovnu a kompilovat / odkaz, který v configure skriptu. Pokud to nepomůže, budete vydávat zprávy o tom, že požadavek není splněn. Já bych nabídnout další podrobnosti, ale kód je na jednotce, která je už není mezi námi.

Odpovězeno 15/06/2009 v 17:49
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more