2012-03-11 2 views
6

Я использовал GNU autoconf для создания скрипта configure для моей программы, которую я сейчас пытаюсь перекрестно скомпилировать для Windows.Скажите сценарию configure для использования относительного пути для --datarootdir

В Linux, чтобы изменить расположение файлов данных, я поставляю --datarootdir=/blah, который отлично работает. В Windows, однако, путь моего приложения не будет известен до времени выполнения (так как пользователь мог бы установить его где угодно.) Поэтому я хочу, чтобы каталог данных был текущим каталогом, где бы это ни было, в то время, когда приложение запускается.

К сожалению, проходя --datarootdir=. не работает:

configure: error: expected an absolute directory name for --datarootdir: . 

Как вы говорите Autoconf/Configure, что вы хотите путь относительно текущего каталога во время выполнения?

ответ

3

Я думаю, что я нашел частичное решение для этого. Кажется --datarootdir используется, чтобы контролировать, где находятся файлы , поэтому он должен быть абсолютным путем в интересах make install. Однако это может быть изменено во время компиляции:

make datadir="." 

Таким образом, во время компиляции кода Тинкс $(datadir) является «» но при работе make install файлы по-прежнему размещены в абсолютном пути, указанному в ./configure --datarootdir=...

+0

Конечно, я так понял, что это ISN Это лучшее решение. При запуске .exe непосредственно он отлично работает (.exe находится в текущем каталоге), но при двойном щелчке по файлу документа, связанному с приложением, .exe запускается из каталога файла документа, что означает, что файлы данных не могут можно найти ... – Malvineous

1

Просто дайте ему абсолютный путь, равный текущему рабочему каталогу:

./configure --datarootdir=$PWD 
+0

Проблема заключается в том, что если один пользователь захочет установить мое приложение в целевой системе в C: \ Program Files, а другой в D: \ Apps, datarootdir будет отличаться между ними. $ PWD будет точным только во время компиляции, тогда как мне нужно, чтобы значение относилось к текущему каталогу времени выполнения. – Malvineous

Смежные вопросы