Преобразование абсолютного пути в #include в C - PullRequest
1 голос
/ 19 декабря 2011

Я пытаюсь получить некоторый код, полученный из репозитория, для работы в моей системе.

В одном из файлов C он содержит абсолютный путь к заголовку:

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

Поскольку этот файл и каталог не существует в моей системе, компиляция исходного кода завершается неудачно.

Я предполагаю, что если я изменю это, чтобы указать на мое личное местоположение config.h, это будет успешно, но затем потерпит неудачу в других системах.

Есть ли способ указать на какую-нибудь символическую ссылку, чтобы система затем использовала правильное местоположение для такого файла?Как лучше всего подойти к этой ситуации?

1 Ответ

4 голосов
/ 19 декабря 2011

Измените его на #include "ruby/config.h", а затем добавьте -I/home/user/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux/ (или где бы вы ни находились) к параметрам вашего компилятора.Это говорит препроцессору добавить этот каталог в список каталогов для поиска при поиске # include.

Чтобы решить переносимость, вы можете затем изменить все, что генерирует make-файл, чтобы использовать этот путь в качестве опции / аргумента, иливы можете просто поместить его в переменную вверху make-файла и попросить людей изменить его:

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

CFLAGS = -Wall -I${RUBY_LOCATION}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...