The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как править исходники при помощи autoconf"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как править исходники при помощи autoconf"  
Сообщение от fa email(??) on 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

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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


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


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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