【发布时间】:2010-02-12 11:04:17
【问题描述】:
在我的项目中,系统的各种目录、文件和其他组件的许多路径以#defines 的形式存储在filenames.h 中,所有需要它们的人都包含该文件。它适用于编译生成的所有各种二进制文件,但该项目还包括一些使用相同路径的 shell 脚本。目前这意味着当路径发生变化时,我所要做的就是编辑 filenames.h 并重新编译以获取可执行文件集以理解新路径,但我必须手动编辑每个 shell 脚本。
所以问题是,如何将#defines 转换为shell 变量,例如生成一些filenames.sh 脚本,该脚本将从其他脚本中调用以对其进行初始化。比如:
#define TMP_PATH "/ait/tmp/"
#define SYNCTMZFILE TMP_PATH "sync_tmz"
会创造
TMP_PATH="/ait/tmp/"
SYNCTMZFILE="/ait/tmp/sync_tmz"
当然可以编写一个创建它的 C 程序(甚至将其打印到标准输出,然后在 shell 中以反引号执行),但我更喜欢更简单的,更健壮的方法,例如,编写一个通过 cpp 运行的类似半 C 半壳的东西会创建正确的输出,或类似的东西。
【问题讨论】:
标签: c shell environment-variables c-preprocessor header-files