Makefile.am: Как использовать curl-config и xml2-config в configure.ac? - PullRequest
3 голосов
/ 11 декабря 2011

Я хочу установить пути include и lib с учетом существующего Makefile (ниже) в configure.ac.Но я не знаю, как я могу использовать команду $ (shell XYZ-config --libs) в файле configure.ac.

Может кто-нибудь помочь, пожалуйста?Спасибо !!

# --------------------------------------------------------------------------
# Acquire configuration information for libraries that libs3 depends upon

ifndef CURL_LIBS
    CURL_LIBS := $(shell curl-config --libs)
endif

ifndef CURL_CFLAGS
    CURL_CFLAGS := $(shell curl-config --cflags)
endif

ifndef LIBXML2_LIBS
    LIBXML2_LIBS := $(shell xml2-config --libs)
endif

ifndef LIBXML2_CFLAGS
    LIBXML2_CFLAGS := $(shell xml2-config --cflags)
endif

Ответы [ 3 ]

5 голосов
/ 11 декабря 2011

Я бы ручался за то, чтобы фактически использовать pkgconfig вместо неуклюжих * -config скриптов, что делает его однострочным для пакета:

# configure.ac
PKG_CHECK_MODULES([libcurl], [curl])
PKG_CHECK_MODULES([libxml2], [libxml-2.0])

# Makefile.am
AM_CPPFLAGS = ${libcurl_CFLAGS} ${libxml2_CFLAGS}
bin_PROGRAMS = foo
foo_LDADD = ${libcurl_LIBS} ${libxml2_LIBS}

* - скрипты конфигурации имеют тенденцию становиться большими частями избыточного кода (как, например, скрипты syvVinit или файлы модулей systemd) с отклоняющимся поведением: некоторые скрипты -config используют --ccflags, другие --cflags. Некоторые используют --libs, другие используют --ldflags - ужасный беспорядок лучше избегать.

0 голосов
/ 13 декабря 2011

Ответственный за пакет - не тот человек, который выполняет эту работу.pkg-config - разумный инструмент, но ему не место в автоинструментах .PKG_CHECK_MODULES должен быть запрещен.

С точки зрения сопровождающего пакета, пользователь (человек или процесс, который вызывает сценарий настройки) несет ответственность за правильную настройку LDFLAGS и CPPFLAGS для информирования сценария настройки о том, как системанастроен.Если пользователь желает упростить жизнь, он настроит систему так, чтобы компилятор мог находить библиотеки и заголовки без выполнения назначений для LDFLAGS или CPPFLAGS (например, библиотеки будут в / usr / lib, заголовки в / usr /включают).Если пользователь хочет усложнить жизнь, это выбор пользователя, и сопровождающий пакета не должен беспокоиться об исправлении неправильных решений пользователя.Если пользователь выбирает установку библиотек в нестандартном месте и хочет использовать pkg-config, чтобы несколько упростить свою жизнь перед лицом этого плохого решения, он может использовать pkg-config в файле config.site для выполнения соответствующих назначений.в LDFLAGS и CPPFLAGS.pkg-config - это разумный инструмент в config.site, но ему не место в configure.ac.Это проблема пользователя, а не сопровождающего пакета.

Суть в том, что пользователи, которые хотят устанавливать библиотеки в нестандартных местах, не должны ожидать, что сопровождающий пакета решит их проблему для них.

0 голосов
/ 12 декабря 2011

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

...