我正在尝试编译一个使用艺术节库的程序。
基本上,要求是在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
我想检测第二种情况,并自动处理,同时仍然要求用户指定前两个目录,如果不满足第二种情况。我该怎么做?
答案 0 :(得分:2)
有什么东西可以排除设置选项吗?
- festival-includes包含默认值(如果未设置)到/ usr / include / festival
- 具有默认值(如果未设置)的festival-libs /usr/lib/libfestival.XXX
同样适用于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