В моем проекте несколько путей к различным каталогам, файлам и другим компонентам системы хранятся как #define
s в filenames.h
, файле, включенном всеми, кто в них нуждается. Он хорошо работает для всех различных двоичных файлов, сгенерированных компиляцией, но проект также включает несколько сценариев оболочки, которые используют одинаковые пути. В настоящее время это означает, что при изменении пути все, что мне нужно сделать, это отредактировать filenames.h
и перекомпилировать, чтобы получить набор исполняемых файлов, чтобы понять новый путь, но я должен редактировать каждый скрипт оболочки вручную.
Таким образом, вопрос в том, как преобразовать #defines
в переменные оболочки, например, сгенерировать некоторый сценарий filenames.sh
, который будет вызываться из других сценариев для их инициализации. Так, например:
#define TMP_PATH "/ait/tmp/"
#define SYNCTMZFILE TMP_PATH "sync_tmz"
создаст
TMP_PATH="/ait/tmp/"
SYNCTMZFILE="/ait/tmp/sync_tmz"
Конечно, можно написать программу C , которая ее создаст (даже распечатывает ее на стандартный вывод, а затем выполняет ее в обратном порядке в оболочке), но я бы предпочел более простую, более скажем, надежный метод написания наполовину С-наподобие оболочки, которая проходит через cpp
, создаст правильный вывод или что-то похожее.