Что должно появиться в Makefile.am и источнике, чтобы связать библиотеку с программой с помощью Autotools? - PullRequest
2 голосов
/ 23 августа 2011

Что должно появиться в Makefile.am, configure.ac и источнике, чтобы связать библиотеку с программой с помощью Autotools?

Мой (в настоящее время тривиальный) проект настраивает, собирает и запускает ОК, но я хочу привести его в порядок.

В настоящее время у меня есть configure.ac:

dnl Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT(foo, 1.0)

AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE()

AC_PROG_CC

AC_CONFIG_FILES(Makefile src/Makefile)
AC_OUTPUT

PKG_CHECK_MODULES([DEPS], [apr-1 >= 1.4.2])

Makefile.am (в src /):

bin_PROGRAMS=a.out
a_out_SOURCES=foo.c
a_out_LDADD = /usr/lib/libapr-1.so

и foo.c:

...
#include <apr-1.0/apr_general.h>
#include <apr-1.0/apr_pools.h>
...

Я хочу избавиться от жестко закодированного пути к / usr / lib / libapr-1.so в Makefile.am и относительные пути #include в foo.c.Я полагаю, что PKG_CHECK_MODULES может найти и сообщить мне расположение файлов, связанных с libapr.

Как мне изменить эти файлы, чтобы это работало?

Спасибо,

Крис.

1 Ответ

2 голосов
/ 23 августа 2011

Ознакомьтесь с этим учебником .

Интересная часть, если вы определите свою проверку pkg следующим образом:

PKG_CHECK_MODULES([APR], [apr-1 >= 1.4.2])

затем вы можете использовать его в Makefile.am:

project_name_LDADD = $(APR_LIBS)
...