0

我不确定我的问题到底是什么,因为我被 autoconf/automake/libtoolize 等严重扭转了。我们中的一些人正在尝试自动授予 mbsystem。我已经在这里提交了迄今为止的工作回购:

https://bitbucket.org/schwehr/mbsystem

我正在尝试改进 netcdf 设置以使用 nc-config,但不确定如何正确执行此操作。我正在处理configure.in。INCLUDES="$INCLUDES ``$nc_config --cflags``"从 gdl netcdf 检查中获取的(请原谅不正确的反引号)之后,似乎无法找到带有 AC_CHECK_HEADER("netcdfcpp.h") 的标头。更新路径的正确方法是什么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

谢谢!

4

2 回答 2

1

请参阅Makefile.am:如何在 configure.ac 中使用 curl-config 和 xml2-config?并用 netcdf 替换 xml2/curl。

只需使用

PKG_CHECK_MODULES([libnetcdf], [netcdf])

在 中configure.ac,然后在 中Makefile.am

AM_CPPFLAGS = ${libnetcdf_CFLAGS}
bin_PROGRAMS = foo
foo_SOURCES = ...
foo_LDADD = ${libnetcdf_LIBS}
于 2011-12-18T15:50:09.447 回答
0

使用第三方 m4 宏的“正确”方法是使用 aclocal(通常通过 automake)生成 aclocal.m4。如果您使用的是 automake,只需添加

ACLOCAL_AMFLAGS = -I m4

到 Makefile.am 并放

AC_CONFIG_MACRO_DIR([m4])

在 configure.ac 中(重命名 configure.in 之后)。

如果您不使用 automake,请在调用 aclocal 时添加“-I m4”。如果您不使用 aclocal,那么您必须将宏的定义附加到 aclocal.m4 的末尾(注意不要运行 aclocal,因为这会覆盖文件。)

没有很好的例子来说明使用 conf 脚本进行构建的干净方法,因为使用此类脚本本身就是一种有缺陷的方法。更简洁的方法是停止使用自定义脚本并通过 PKG_CHECK_MODULES 使用 pkg-config,但最简洁的方法是教育您的用户。如果用户想在时髦的非标准位置安装库,那么他们需要接受足够的教育以适当地设置 LDFLAGS 和 CPPFLAGS。

于 2011-12-21T14:13:01.327 回答