2

这是一个特定的问题,但是,我无法在 Fedora 23 中获得 cmake 和 make 来编译 Yet Another Prolog。克隆了 Github 上的最新 repo,YAP 6.3.4。我的朋友在他的 Funtoo Linux 上运行 cmake 并在相同的克隆上成功地制作。当我在 Fedora 23 上运行它们时,我会遇到奇怪的错误,这些错误只有在缺少 CUDD 头文件时才有意义,但 CUDD 是随头文件一起安装的。

我希望任何人都有足够的经验来解释为什么 cmake 生成的 Makefile 在一个 Linux 系统上编译时无法在另一个 Linux 系统上编译的原因。

这是一个 make 错误示例(使用 cmake 制作的 Makefile 没有错误)。“未知”类型名称位于我的系统上安装的 CUDD 标头中。源文件 cplint 应该使用 CUDD 构建

% YAP 6.3.4-76638bb7 (compiled  2016-09-01T01:01:57@dhcp-129-8-62-64)

In file included from /home/safulop/yap-6.3/packages/cplint/cplint_yap.c:15:0:
/home/safulop/yap-6.3/packages/cplint/cplint.h:41:3: error: unknown type name ‘DdNode’
   DdNode * * booleanVars;
   ^
/home/safulop/yap-6.3/packages/cplint/cplint.h:54:3: error: unknown type name ‘DdNode’
   DdNode *key;
   ^
/home/safulop/yap-6.3/packages/cplint/cplint.h:64:33: error: unknown type name ‘DdManager’
 variables createVars(YAP_Term t,DdManager * mgr, int create_dot, 
                                 ^
/home/safulop/yap-6.3/packages/cplint/cplint.h:69:1: error: unknown type name ‘DdNode’
 DdNode * retFunction(DdManager * mgr, expr expression,variables v);
 ^
/home/safulop/yap-6.3/packages/cplint/cplint.h:69:22: error: unknown type name ‘DdManager’
 DdNode * retFunction(DdManager * mgr, expr expression,variables v);
                      ^
/home/safulop/yap-6.3/packages/cplint/cplint.h:70:1: error: unknown type name ‘DdNode’
 DdNode * retTerm(DdManager * mgr,term t,variables v);
 ^
4

1 回答 1

0

正如你所说,问题来自 CUDD 库。您需要在 Makefile 中修复 CUDD 的包含目录文件夹...

于 2020-01-03T17:52:00.413 回答