我试图将ncurses安装到非系统范围的前缀(用于交叉编译)。
一切正常,我能够将ncurses安装到指定的前缀,头文件位于<prefix>/include/ncurses
。
我尝试编译的程序(特别是GHC)找不到标题,因为它会尝试#include <ncurses.h>
,但这并不起作用。 (include <ncurses/ncurses.h>
确实有用,但GHC并没有尝试这一点。)
所以我认为直接将标题安装到<prefix>/include
就行了,但我无法做到这一点。将--includedir=<prefix>/include
传递给ncurses的configure脚本并没有给出所需的结果,因为安装的ncurses.h然后尝试#include <include/ncurses_dll.h>
,这不起作用。
<prefix>/include
当然是在使用过的CPP的搜索路径中。
答案 0 :(得分:1)
通常,--includedir
用于基于autoconf的配置脚本用于告诉makefile文件安装头文件的位置,而不是包含它们的位置在编译期间。
相反,您可能想要设置的选项位于CPPFLAGS
变量中。例如,由于GHC只在标准位置使用ncurses头文件,因此您可以通过在-I
中将这两个目录指定为CPPFLAGS
选项来解决此问题。
以下是一些有用的讨论:
顺便说一下,前缀 / lib看起来很奇怪......
关于--disable-overwrite
的评论,Linux和其他一些平台默认启用此功能。一个OSX没有。在配置结束时,configure脚本运行makefile规则以显示生成的配置。如果禁用覆盖,您将看到如下消息:
** Include-directory is not in a standard location