Как настроить LDFLAGS для библиотеки "noinst" с помощью Automake?

Предположим, я разработал libfoo.a как промежуточный этап в процессе компиляции. Вот строка для этого в Makefile.am:

noinst_LIBRARIES = libfoo.a

Эта библиотека зависит от других библиотек. Чтобы предотвратить получение неопределенных ошибок ссылок, мне нужно настроить переменную LDFLAGS. Вот что я сделал:

libfoo_a_LDFLAGS = `pkg-config --ldflags some_lib`

Тем не менее, automake не удается с этим сообщением:

variable `libfoo_a_LDFLAGS` is defined but no program or library has `libfoo_a` as canonical name (possible typo)

Что я здесь не так делаю? Это работает для libfoo_a_SOURCES и _CFLAGS.

1 ответ

Решение

Это невозможно сделать с помощью простой промежуточной библиотеки *.a. Это потому, что промежуточная библиотека никогда не связана, поэтому LDFLAGS не имеет смысла для этого. Промежуточная библиотека - это просто архивный архив, представляющий собой набор объектных файлов. В архиве архива нет места для записи флагов, которые нужно было бы использовать для связывания конечного объекта.

Нормальное решение - сделать то, что предлагает Уильям Перселл: добавить необходимое LDFLAGS до конечных исполняемых файлов или общих библиотек, которые вы создаете в процессе сборки.

Другой возможностью является сборка промежуточных библиотек в виде библиотек libtool *.la, даже если вы собираетесь использовать их только в качестве промежуточных библиотек. Когда вы сделаете это, система сборки сгенерирует общий объект (который вы в итоге не будете использовать, поскольку вы объедините базовые объектные файлы в фактический артефакт сборки), но, что более важно, он создаст файл *.la, который имеет место для записи такого рода информации о зависимостях. Руководство Automake называет это "удобной библиотекой Libtool". Для этого вам, конечно, нужно использовать libtool и переключиться на вызов этого libfoo.la в вашем Makefile.am и перечислите это в noinst_LTLIBRARIES, Но если вы уже используете libtool, это, вероятно, больше проблем, чем оно того стоит.

Другие вопросы по тегам