我正在尝试安装 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"
不确定这是否是解决此问题的正确方法...