как сделать библиотеку с помощью libtool, если в нескольких каталогах есть источники с одинаковыми именами файлов - PullRequest
0 голосов
/ 28 января 2011

Я пытаюсь скомпилировать библиотеку с помощью libtool.Проблема в том, что у меня есть несколько исходных файлов с одним и тем же именем в нескольких каталогах.Из-за этого во время autoreconf 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 в каждую из подкаталогов.Как именно это сделать?Гугл не помог найти решение.

Ответы [ 2 ]

0 голосов
/ 28 января 2011

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

0 голосов
/ 28 января 2011

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

...