come fare una biblioteca con libtool se ci sono fonti con lo stesso nome in diverse directory
-
26-10-2019 - |
Domanda
Sto cercando di compilare una libreria utilizzando libtool. Il problema è che ho diversi file di origine con lo stesso nome in diverse directory. A causa della che, nel corso autoreconf, libtoolize tiri errori a me.
In sostanza, il mio layout del filesystem è la seguente:
src/
Makefile.am
file.cpp
dir1/
file.cpp
...
dir2/
file.cpp
...
Il Makefile.am
viene inserito nella src / directory e viene chiamato dal principale Makefile.am utilizzando SUBDIRS = src
. I contenuti sono simili a quanto segue:
libfoo_la_SOURCES = \
file.cpp \
dir1/file.cpp \
dir2/file.cpp \
...
Tuttavia, quando si fa autoreconf, ottengo un errore:
src/Makefile.am: object `file.lo' created by `dir1/file.cpp' and `file.cpp'
Come risolvere questo? Suppongo che dovrò aggiungere un Makefile.am in ciascuna delle subdiectories. Come fare esattamente questo? Google non ha aiutato a trovare la soluzione.
Soluzione 2
La soluzione è quella di creare librerie di convenienza libtool (li prefisso noinst in modo che non saranno installati) in ogni sottodirectory e poi collegarli alla libreria condivisa finale.
Altri suggerimenti
Anche se fate che lavoro nel sistema di compilazione, la libreria statica sarà ancora parti del codice come mancanti ar sovrascrive felicemente membri dell'archivio con lo stesso nome.