У меня есть простой проект автоинструментов с двумя программами: one
и two
.
От библиотеки зависит только одна программа (math
в этом примере), и мне бы хотелось, чтобыдругая программа не должна быть связана с этой библиотекой.
Вот мои файлы:
configure.ac
AC_INIT([test], [0.1], [somebody@example.com])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
AC_PROG_CC
AC_CHECK_LIB([m], [log])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
Makefile.am
bin_PROGRAMS = one two
one_SOURCES = one.c
two_SOURCES = two.c
one.c (заголовки удалены)
int main(void)
{
/* do depend on lib math*/
printf("log[15] = %f\n", log(15));
return 0;
}
two.c (заголовки удалены)
int main(void)
{
/* do NOT depend on lib math*/
printf("15 = %d\n", 15);
return 0;
}
Когда я собираю это
autoreconf --install
./configure
make
Программы хорошо сложены:
# compilation
gcc .... -c -o one.o one.c
# link
gcc .... -o one one.o -lm
# compilation
gcc .... -c -o two.o two.c
# link THE PROBLEM IS HERE, I don't want `-lm` to be added here
gcc .... -o two two.o -lm