Я работаю над проектом, написанным на C, используя autotools, который создает статическую библиотеку. Я также предоставляю интерфейс Python для C API в контексте того же проекта. До недавнего времени у меня не было разрешения вводить libtool в проект, чтобы иметь возможность предоставлять как статические, так и динамические библиотеки переносимым способом. До сих пор я создавал общий модуль Python с использованием distutils и связывал модуль python со статической библиотекой C проекта. Опять же, это потому, что мне не разрешили ввести библиотеки libtool / shared в систему. Теперь, когда я хочу установить libtool, я столкнулся со следующими двумя проблемными сценариями:
Если я продолжу выпускать общий модуль Python с использованием distutils, поскольку distutils и autotools не общаются друг с другом, я должен сообщить distutils, на какую библиотеку C ссылаться. Пока что я не могу придумать какой-либо способ сделать это, но проанализировал файл .la, чтобы получить имя и путь к библиотеке, которую смогла создать libtool. Предоставляет ли libtool какую-либо информацию относительно того, какой тип библиотеки он смог создать в системе?
Если я перенесу производство модулей Python в автоматизированный режим, это нормально, пока я не достигну процесса установки. Я понятия не имею, как сказать libtool, что я хочу, чтобы мой модуль Python был где-то еще, кроме папки lib, то есть 'lib / python2.5 / site-packages / myproject'. Я пытался
просто скопируйте библиотеку в Makefile, однако это не сработало должным образом, поскольку у библиотеки был неправильный путь rpath (тот, что в сборке, а не в установке). Почему я хочу это там? Потому что там у меня также есть .py обертки. Итак, есть ли способ сказать libtool установить мой модуль где-нибудь еще и правильно установить rpath?
Полагаю, я просто ищу элегантное решение, или, может быть, решение есть, и оно простое, но я не вижу его, потому что у меня недостаточно опыта. Любая помощь?
P.S. Предпочел бы вариант 2, если бы я мог заставить его работать, так как таким образом мне не пришлось бы передавать информацию из автоинструментов в distutils.