The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Как править исходники при помощи autoconf, !*! fa, 21-Дек-07, 14:15  [смотреть все]
Всем привет.
Вот такая проблема: в 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

Пожалуйста, подскажите, есть ли более "опрятное" решение.
Заранее спасибо

  • Как править исходники при помощи autoconf, !*! phpcoder, 14:53 , 21-Дек-07 (1)
    [...]
    >./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 с нужными аргументами.


    • Как править исходники при помощи autoconf, !*! fa, 14:13 , 26-Дек-07 (2)
      >[...]
      >>./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"




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру