如何获取配置脚本以查找库

时间:2009-09-30 23:49:21

标签: autoconf configure

我正在尝试编写一个configure.ac文件,以便生成的configure脚本搜索包含给定静态库的库目录,例如libsomething.a。我怎样才能做到这一点?目前,我只需检查一个位置:

AC_CHECK_FILE([/usr/local/lib/libsomething.a],[AC_SUBST(libsomething,"-L/usr/local/lib -lsomething")],[AC_SUBST(libcfitsio,'')])

但我想让它尝试自动找到它。如果库不在默认位置之一,我想配置为找不到库,并且可以通常使用--use-something = path指定自定义位置。所以我还需要检查是否提供了--use-something = path。我是创建配置文件的新手,并且M4文档不是很容易理解,所以非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:15)

这不是配置搜索安装库的工作。它应该只确保它们可供链接器使用。如果用户将其安装在其他位置,则他知道如何调用./configure CPPFLAGS=-I/the/location/include LDFLAGS=-L/the/location/lib以便工具找到该库(--help输出configure和标准中对此进行了解释INSTALL文件)。

此外,--with-package--enable-package宏不应用于指定路径,这与许多第三方宏将执行的操作相反。 GNU Coding Standards明确禁止此用法:

  

请勿使用--with选项   指定要用于查找的文件名   某些文件。这超出了范围   --with选项的用途。

CPPFLAGSLDFLAGS已经在这里解决问题,为什么要重新开发和维护另一种机制?

答案 1 :(得分:2)

解决这个问题的最好方法是查看其他类似的autoconf宏。 Autoconf宏是Bourne shell脚本和M4代码的混合体,因此它们可以解决任何可计算的问题。

以下是我为MySQL++撰写的宏的链接:mysql++.m4