查找自定义包含autoconf的目录

时间:2011-06-16 21:55:45

标签: autotools autoconf automake include-path festival

我正在尝试编译一个使用艺术节库的程序。

基本上,要求是在include路径中包含festival estools头目录,并且包含它们的库路径。

在正常安装中,他们只是留在自己的文件夹中,所以你有

/some/path/festival/src/include 
/some/other/path/estools/include

作为必需的搜索路径,

/some/path/festival/src/lib
/some/other/path/estools/lib

作为库路径。

我认为处理这个问题的正确方法是使用“--with-estools”和“--with-festival”配置选项。

但是,当它安装在debian / ubuntu系统上时,会有不同的设置。 我希望能够处理此设置,其中搜索路径为

/usr/include/festival
/usr/include/estools

,搜索路径只是

/usr/lib

我想检测第二种情况,并自动处理,同时仍然要求用户指定前两个目录,如果不满足第二种情况。我该怎么做?

3 个答案:

答案 0 :(得分:2)

有什么东西可以排除设置选项吗?

  1. - festival-includes包含默认值(如果未设置)到/ usr / include / festival

  2. - 具有默认值(如果未设置)的festival-libs /usr/lib/libfestival.XXX

  3. 同样适用于estools。

答案 1 :(得分:2)

软件包维护者根本不需要担心这些细节;这是用户的责任。如果用户在非标准位置安装了库,则用户需要将LDFLAGS = -L / path /添加到/ lib到CONFIG_SITE文件或每次调用configure或将该路径放入编译器的搜索路径中一些系统依赖机制。同样,用户应将-I / path / to / include附加到CPPFLAGS。

换句话说,只需在标准位置安装库和标题,debian就是在做正确的事情。任何选择在非标准位置安装库的人都会给自己更多的工作。修复错误不是你的责任。

添加像--with-festival或--with-festival-headers这样的选项是没有用的;用户可以轻松地分配到LDFLAGS和CPPFLAGS,这些变量是标准化的。

答案 2 :(得分:1)

有些平台采用了Filesystem Heirarchy Standard - http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

这应该真实地反映在autoconf中,而不是坚持用户应该通过设置CFLAGS来处理它,因为/ opt / openssl / lib不再是“非标准”位置。

FHS还指定/ usr / local是“特定于此主机的本地数据的第三层次结构”。所以可以说,/ opt应该首先进行检查。

有关FHS / opt的更多信息 - > http://www.pathname.com/fhs/pub/fhs-2.3.html#OPTADDONAPPLICATIONSOFTWAREPACKAGES