Как сделать библиотеку с Libtool, если есть источники с одинаковым именем файла в нескольких каталогах
-
26-10-2019 - |
Вопрос
Я пытаюсь собрать библиотеку с помощью 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 в каждый из поддействий. Как именно это сделать? Google не помог найти решение.
Решение 2
Решение состоит в том, чтобы создать удобные библиотеки Libtool (префикс их NOUNST, чтобы они не были установлены) в каждом подкаталоге, а затем свяжите их с окончательной общей библиотекой.
Другие советы
Даже если вы сделаете эту работу в системе сборки, в статической библиотеке все равно будет отсутствовать части кода как АР К счастью, перезаписывает членов архива с тем же именем.