在C中的#include中转换绝对路径

我试图获取一些我从存储库中获取的代码,以便在我的系统上工作。

在其中一个C文件中,它包含标头的绝对路径:

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

由于我的系统上不存在此文件和目录,因此编译源代码失败。

我假设如果我将其更改为指向config.h的个人位置,它将成功但在其他人的系统上失败。

有没有办法指出一些符号链接,系统将使用适当的位置为这样的文件? 处理这种情况的最佳方法是什么?

将其更改为#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}