2013-10-13 4 views
1

Букет проектов foo-AB, foo-BC, foo-AC и т. Д. Каждый зависит от foo-A, foo-B, foo-C и т. Д.Канонический способ использования переменных pkg-config в Makefile.am

Каждый из foo-X устанавливает файл pkg-config (foo-X.pc.in), который содержит переменную [email protected]@/foo/foo-B. Проект foo-X-Y должен ссылаться на файлы в Xsrcdir и Ysrcdir.

В настоящее время мы делаем это, как это в configure.ac:

PKG_CHECK_MODULES([foo_X], [foo-X]) 
AC_ARG_VAR(XSRC, "Source directory for foo-X") 
AS_IF([test -z "$XSRC"], [XSRC=`pkg-config --variable=srcdir foo-X`]) 

(так Makefile.am получает есть правила, как compile "$XSRC"/file.bar [email protected]). Это также позволяет разработчикам переопределять XSRC при запуске ./configure.

Мой вопрос: есть ли более канонический способ использования нестандартных переменных pkg-config в configutools configy/makefiles? Напр. libdir, я вижу, что pkg-config устанавливает сами переменные, поэтому нет необходимости в строке configure.ac, кроме PKG_CHECK_MODULES; есть ли другие макросы m4, которые мы должны использовать?

ответ

1

Я знаю, что это довольно поздно, но, поскольку кто-то спрашивал меня об этом недавно, я подумал, что, возможно, стоит ответить на это тоже.

Что вы ищете является PKG_CHECK_VAR, на самом деле большая часть этого кода можно заменить одной строкой:

PKG_CHECK_VAR([XSRC], [foo-X], [srcdir], , 
    AC_MSG_FAILURE([Unable to find value for XSRC])) 

сообщение об ошибке немного менее ясно, чем тот, вызванного PKG_CHECK_MODULES, но также срабатывает в случае, если переменная srcdir не определена.

Я написал несколько подробностей как part of my Autotools Mythbuster.