Cómo hacer una biblioteca con Libtool si hay fuentes con el mismo nombre de archivo en varios directorios
-
26-10-2019 - |
Pregunta
Estoy tratando de compilar una biblioteca usando Libtool. El problema es que tengo varios archivos de origen con el mismo nombre de archivo en varios directorios. Debido a eso, durante el autoreconf, LBBToolize me arroja errores.
Básicamente, el diseño del sistema de archivos es el siguiente:
src/
Makefile.am
file.cpp
dir1/
file.cpp
...
dir2/
file.cpp
...
los Makefile.am
se coloca en el directorio SRC/ y es llamado por el principal makefile.am usando SUBDIRS = src
. El contenido es similar al siguiente:
libfoo_la_SOURCES = \
file.cpp \
dir1/file.cpp \
dir2/file.cpp \
...
Sin embargo, al hacer autoreconf, recibo un error:
src/Makefile.am: object `file.lo' created by `dir1/file.cpp' and `file.cpp'
¿Cómo resolver eso? Supongo que tendré que agregar un makfile.am a cada uno de los subdiectorios. ¿Cómo hacer eso exactamente? Google no ayudó a encontrar la solución.
Solución 2
La solución es crear bibliotecas de Libtool de conveniencia (prefijarlas noinst para que no se instalen) en cada subdirectorio y luego vincularlas a la biblioteca compartida final.
Otros consejos
Incluso si hace que ese funcione en el sistema de compilación, la biblioteca estática seguirá faltando partes del código como Arkansas Felizmente sobrescribe a los miembros del archivo con el mismo nombre.