Sto lavorando a un progetto C++ su GNU/Linux e sto cercando un modo per testare l'esistenza e l'usabilità della libreria IBM Informix con gli Autotools, ovvero la modifica di configure.in
. Non ho esperienza con Autotools, quindi in pratica sto prendendo spunto dal progetto configure.in
e altri. script e copia & cambiare dove ritengo debba essere modificato. IOW, mi sono adattato dal testo esistente in configure.in
.Come testare l'usabilità di una libreria C++ in configure.in?
Finora ho utilizzato con successo il AC_CHECK_LIB
in configure.in
per verificare se esiste una certa libreria ed è utilizzabile. Ma sembra funzionare solo con le librerie con le funzioni , non ad es. classi. Vale a dire, questo non riesce quando il test libifc++.so
biblioteca di Informix:
AC_CHECK_LIB(ifc++, ITString,
INFORMIX_LIB="-L$INFORMIX_LIB_LOCATION/c++ -lifc++ -L$INFORMIX_LIB_LOCATION -L$INFORMIX_LIB_LOCATION/dmi -L$INFORMIX_LIB_LOCATION/esql -lifdmi -lifsql -lifasf -lifgen -lifos -lifgls -lifglx $INFORMIX_LIB_LOCATION/esql/checkapi.o -lm -ldl -lcrypt -lnsl",
echo "* WARNING: libifc++.so not found!"
INFORMIX_INC=""
INFORMIX_LIB=""
)
Ho anche provato ad utilizzare altre combinazioni, come ITString::ITString
, ecc
non ho trovato una funzione di "puro" in API di Informix (vale a dire , uno che non è conteso in una classe C++). Quindi spero che o ci sia un modo di usare AC_CHECK_LIB
in questo contesto, o c'è un altro /configure.in
"comando" per questo uso specifico.
Grazie in anticipo per il vostro feedback.
Works-for-me. Avevo pensato di fare qualcosa del genere, ma sembrava un trucco. Ad esempio, non sono sicuro di cosa succederebbe se il codice venisse ricompilato con una versione diversa della libreria Informix (mi aspetto che cambi il nome mutilato). Ma hey, funziona! :-) – jbatista
Questo dovrebbe continuare a funzionare con una nuova versione di libreria (supponendo che i nomi di classe e metodo non cambino), ma potrebbe interrompersi se la versione del compilatore cambia e quasi sicuramente si interromperà se qualcun altro tenta di compilare il codice su un altro compilatore o versione del compilatore. –
@Tyler: un punto valido; L'ho evidenziato nella risposta. – DaveR