我正在尝试编写一个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文档不是很容易理解,所以非常感谢任何帮助。
谢谢!
答案 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
选项的用途。
CPPFLAGS
和LDFLAGS
已经在这里解决问题,为什么要重新开发和维护另一种机制?
答案 1 :(得分:2)
解决这个问题的最好方法是查看其他类似的autoconf宏。 Autoconf宏是Bourne shell脚本和M4代码的混合体,因此它们可以解决任何可计算的问题。
以下是我为MySQL++撰写的宏的链接:mysql++.m4。