Есть два основных подхода.Если функции в SomeLibrarySource используются только основной, то нет необходимости создавать отдельную библиотеку, и вы можете просто указать исходные файлы в src / Makefile.am
main_SOURCES = main.c SomeLibrarySource/SomeFuncs.c
Однако, если вы действительно хотитеиспользуйте функции из другого кода в вашем дереве, вы не хотите компилировать SomeFuncs.c несколько раз, но должны использовать вспомогательную библиотеку.
# Assigning main_SOURCES is redundant
main_SOURCES = main.c
main_LDADD = SomeLibrarySource/libSomeFuncs.a
noinst_LIBRARIES = SomeLibrarySource/libSomeFuncs.a
AM_CPPFLAGS = -I$(srcdir)/SomeLibrarySource
(для удобства вам понадобится AC_PROG_RANLIB в файле configure.acбиблиотеки.) Если исходный файл называется SomeFuncs.c, automake не потребуется Makefile.am для указания SomeLibrarySource_libSomeFuncs_a_SOURCES
, но если имя файла исходного кода не соответствует имени, указанному в noinst_LIBRARIES
, SomeLibrarySource_libSomeFuncs_a_SOURCES
должнобыть установлен в список файлов, используемых для создания библиотеки.Обратите внимание, что вам не нужно указывать main_SOURCES, так как main.c является значением по умолчанию, если оно не указано (но это не плохая идея, чтобы быть явным.) (Во всем этом мне неудобно использовать имена CamlCase, но системаЯ использую файловую систему без учета регистра (самая большая ошибка, которую когда-либо делала Apple), и примеры, которые я привожу здесь, работают для меня. YMMV) * 1010 *
Конечно, вы можете сделать рекурсивное создание или собрать библиотеку какотдельный проект и установите его.(Мне нравится последний вариант. Библиотеки с полезными функциями должны существовать сами по себе.)