У меня есть приложение C, которое я конвертирую из набора созданных вручную файлов Makefile в GNU AutoMake. В нем есть подкаталог, содержащий заголовок интерфейса и несколько зависящих от платформы реализаций. В настоящее время выбирается реализация и создается объектный файл с фиксированным именем в этом каталоге. Код, использующий интерфейс драйвера, затем связывается с этим объектным файлом и автоматически получает нужный драйвер.
Как лучше всего преобразовать эту систему для использования AutoTools? У меня уже есть AutoConf, создающий замену для правильного файла реализации драйвера. Я просто не могу понять, как получить цель AutoMake, переменные EXTRA_*_SOURCES
и *_LDADD
которой я могу поместить файлы реализации. Мне просто нужно отказаться от промежуточного объектного файла и поместить их в список для целевой программы, которая использует их?
РЕДАКТИРОВАТЬ: Решено благодаря ptomato.
Из-за разрешения зависимостей Automake все возможные источники должны быть названы в *_SOURCES
и EXTRA_*_SOURCES
, как описано в раздел "Условные источники" руководства. Следовательно, строфа библиотеки на самом деле:
noinst_LIBRARIES = libdriver.a
libdriver_a_SOURCES = driver.h
EXTRA_libdriver_a_SOURCES = driver-linux.c driver-windows.c driver-osx.c
libdriver_a_LIBADD = @DRIVERIMPL@