2

我正在尝试安装 Ruby gem: dep_gecode。它编译了一些 C 扩展,但编译失败,因为 cpp 编译器没有使用正确设置的包含文件夹运行。

当我运行rake install它时,它会自动创建一个 Makefileextconf.rb来编译扩展。当我编辑 Makefile 并手动添加标志-I/usr/local/include时,扩展的编译成功。但是当我重新运行时rake install,Makefile 被覆盖并且编译再次失败。显然我需要修复extconf.rb,但我不太知道如何修复。

现在更详细一点。gem的来源dep_gecode在这里:

https://github.com/opscode/dep-selector

extconf.rb需要修改的文件在这里:

https://github.com/opscode/dep-selector/blob/master/ext/dep_gecode/extconf.rb

我想在生成的 Makefile 中更改的是这一行:

CPPFLAGS =  -I/usr/include   -I/usr/include -I/usr/local/include

而不是此时正在生成的这个:

CPPFLAGS =  -I/usr/include   -I/usr/include

如您所见,/usr/local/include缺少包含路径。这是 FreeBSD 系统上的标准包含路径,这表明问题可能出在 Rake,而不是这个特定extconf.rb文件。非常感谢任何帮助。

编辑:我刚刚找到了一种解决方法。添加这一行就足以使extconf.rb该文件夹正确出现在生成的Makefile

$CPPFLAGS << "-I/usr/local/include"

不确定这是否是解决此问题的正确方法...

4

0 回答 0