在我的项目中,系统的各种目录、文件和其他组件的许多路径都存储为#define
s 中的 s ,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 中以反引号执行),但我更喜欢更简单、更健壮的方法,比如写一个半-像 C 半壳一样运行的东西cpp
会产生正确的输出,或者类似的东西。