2011-12-19 400 views
1

我想获得一些代码,我从存储库中获取以在我的系统上工作。因为这个文件和目录没有我的系统上不存在,编译源代码失败转换#include中的绝对路径C

#include "/home/user/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux/ruby/config.h" 

在C文件之一,它包含一个绝对路径的标题。

我想如果我改变这个指向我个人的config.h位置,它会成功,但在其他系统上失败。

有没有办法指向一些符号链接,然后系统会使用这个文件的适当位置?处理这种情况的最佳方式是什么?

+0

谢谢你解决这个问题。 – Strobecast

回答

4

将其更改为#include "ruby/config.h",然后将-I/home/user/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux/(或任何您的位置)添加到您的编译器选项。这告诉预处理器在查找#includes时将该目录添加到要搜索的目录列表中。

为了解决可移植性,那么你可以改变任何生成的makefile走这条路作为一个选项/参数,或者你可以把它放在一个变量在Makefile的顶部,并要求人们改变:

RUBY_LOCATION = /home/user/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux/ 

CFLAGS = -Wall -I${RUBY_LOCATION} 
相关问题