Как правильно настроить autoconf для настройки netcdf 4.x? - PullRequest
0 голосов
/ 18 декабря 2011

Я не уверен точно, в чем заключается мой вопрос, так как меня серьезно оборачивают autoconf / automake / libtoolize и т. Д. Некоторые из нас пытаются автоматически перенастроить mbsystem. Я выложил репо работы на сегодняшний день здесь:

https://bitbucket.org/schwehr/mbsystem

Я пытаюсь улучшить настройку netcdf для использования nc-config, но не знаю, как это сделать правильно. Я работаю над configure.in. Кажется, он не может найти заголовок с AC_CHECK_HEADER ("netcdfcpp.h") после INCLUDES="$INCLUDES ``$nc_config --cflags``" (простите за неправильные обратные галочки), как это было взято из проверки gdl netcdf. Как правильно обновить путь с nc-config --cflags?

http://gnudatalanguage.cvs.sourceforge.net/viewvc/gnudatalanguage/gdl/configure.in?revision=1.121

Затем я попытался использовать AX_PATH_GENERIC и застрял на этой ошибке с m4_include([m4/ax_path_generic.m4])

Running autoconf ...
configure.in:29: error: possibly undefined macro: AC_SUBST
      If this token and others are legitimate, please use m4_pattern_allow.
     See the Autoconf documentation.
configure:12992: error: possibly undefined macro: AC_MSG_RESULT

Любая помощь в улучшении создания проверки netcdf, которая на самом деле будет работать с нестандартными нестандартными местами установки через nc-config, и выяснение того, как правильно поместить макрос в каталог m4, была бы огромной помощью.

Указатель на пакет, делающий это действительно чисто, был бы супер помощью. Я искал в источниках netcdf, gdal, geos и gdl примеры. И такие вещи, как проверка осьминога netcdf, не используют nc-config ... http://www.tddft.org/trac/octopus/browser/trunk/m4/netcdf.m4

Текущая настройка с fink для netcdf 4.x:

nc-config --cflags --libs
-I/sw/opt/netcdf7/include -I/sw/include
-L/sw/opt/netcdf7/lib -lnetcdf

Спасибо!

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

См. Makefile.am: Как использовать curl-config и xml2-config в configure.ac? и заменить xml2 / curl на netcdf.

Просто используйте

PKG_CHECK_MODULES([libnetcdf], [netcdf])

в configure.ac, а затем в Makefile.am:

AM_CPPFLAGS = ${libnetcdf_CFLAGS}
bin_PROGRAMS = foo
foo_SOURCES = ...
foo_LDADD = ${libnetcdf_LIBS}
0 голосов
/ 21 декабря 2011

«Правильный» способ использования стороннего макроса m4 - использовать aclocal (обычно через automake) для генерации aclocal.m4.Если вы используете automake, просто добавьте

ACLOCAL_AMFLAGS = -I m4

в Makefile.am и поместите

AC_CONFIG_MACRO_DIR([m4])

в configure.ac (после переименования configure.in).

Если вы не используете automake, добавьте '-I m4' при вызове aclocal.Если вы не используете aclocal, вам придется добавить определение макроса в конец aclocal.m4 (и будьте осторожны, чтобы никогда не запускать aclocal, так как это перезапишет файл.)

Тамне является хорошим примером чистого способа использования сценариев conf для построения, потому что использование таких сценариев является изначально ошибочным подходом.Немного более чистый подход состоит в том, чтобы прекратить использование пользовательских сценариев и использовать pkg-config через PKG_CHECK_MODULES, но самый чистый способ сделать это - обучить своих пользователей.Если пользователь хочет установить библиотеку в нестандартных нестандартных местах, он должен быть достаточно образован, чтобы правильно настроить LDFLAGS и CPPFLAGS.

...