как сделать библиотеку с помощью libtool, если в нескольких каталогах есть исходники с одинаковым именем файла

Я пытаюсь скомпилировать библиотеку с помощью libtool. Проблема в том, что у меня есть несколько исходных файлов с одинаковым именем файла в нескольких каталогах. Из-за этого во время автореконфы libtoolize выдает мне ошибки.

В основном, моя структура файловой системы выглядит следующим образом:

src/
    Makefile.am
    file.cpp
    dir1/
        file.cpp
        ...
    dir2/
        file.cpp
        ...

Makefile.am помещается в каталог src/ и вызывается основным Makefile.am с помощью SUBDIRS = src. Содержимое аналогично следующему:

libfoo_la_SOURCES =    \
    file.cpp        \
    dir1/file.cpp   \
    dir2/file.cpp   \
    ...

Однако при выполнении autoreconf я получаю сообщение об ошибке:

src/Makefile.am: object `file.lo' created by `dir1/file.cpp' and `file.cpp'

Как это решить? Я предполагаю, что мне придется добавить Makefile.am в каждый из подкаталогов. Как именно это сделать? Гугл не помог найти решение.


person Community    schedule 28.01.2011    source источник


Ответы (2)


Даже если вы заставите это работать в системе сборки, в статической библиотеке все равно будут отсутствовать части кода, поскольку ar успешно перезаписывает элементы архива с тем же именем.

person Simon Richter    schedule 28.01.2011

Решение состоит в том, чтобы создать удобные библиотеки libtool (с префиксом noinst, чтобы они не устанавливались) в каждом подкаталоге, а затем связать их с окончательной общей библиотекой.

person Community    schedule 28.01.2011