Всем привет.
Вот такая проблема: в header-файле жестко прописан путь к файлу (конфиг программы):$cat config.h
...
#define CONFIG_FILE "/usr/local/etc/myprogram.conf"
...Все бы ничего, до тех пор, пока при компиляции пользователь не указывает другой prefix
./configure --prefix=/home/user. Соответственно путь к конфигу уже не правильный.
Пока борюсь с этим в Makefile, меняя строчку с помощью sed
if (grep '#define CONFIG_FILE' config.h); then cat config.h | sed '/^#define CONFIG_FILE/d;G' > tmp; mv tmp config.h; fi
echo "#define CONFIG_FILE \"${sysconfdir}/trafitizer.conf\"" >> config.hПожалуйста, подскажите, есть ли более "опрятное" решение.
Заранее спасибо
[...]
>./configure --prefix=/home/user. Соответственно путь к конфигу уже не правильный.
>Пока борюсь с этим в Makefile, меняя строчку с помощью sed
>if (grep '#define CONFIG_FILE' config.h); then cat config.h | sed '/^#define CONFIG_FILE/d;G' > tmp; mv tmp config.h; fi
>echo "#define CONFIG_FILE \"${sysconfdir}/trafitizer.conf\"" >> config.hСтрашно.
Вы, кажется, вообщё всё не совсем верно делаете :) config.h должен генериться автоматически из config.h.in при вызове скрипта configure. Ну и чтоб там появился #define CONFIG_FILE нужно в configure.in вызывать AC_DEFINE с нужными аргументами.
>[...]
>>./configure --prefix=/home/user. Соответственно путь к конфигу уже не правильный.
>>Пока борюсь с этим в Makefile, меняя строчку с помощью sed
>>if (grep '#define CONFIG_FILE' config.h); then cat config.h | sed '/^#define CONFIG_FILE/d;G' > tmp; mv tmp config.h; fi
>>echo "#define CONFIG_FILE \"${sysconfdir}/trafitizer.conf\"" >> config.h
>
>Страшно.
>
>Вы, кажется, вообщё всё не совсем верно делаете :) config.h должен генериться
>автоматически из config.h.in при вызове скрипта configure.Именно так и происходит. Эта манипуляция с grep проходит при запуске make, после того, как config.h уже сгенерирован.
Ну и чтоб там
>появился #define CONFIG_FILE нужно в configure.in вызывать AC_DEFINE с нужными аргументами.
>Пробовал так:
AC_DEFINE_UNQUOTED(CONFIG_FILE, "$sysconfdir")В результате получаю в config.h:
#define CONFIG_FILE "${prefix}/etc"