在下面的代码中,我希望在编译时从环境变量THE_VERSION_STRING
的值中获取MY_VERSION
的值
namespace myPluginStrings {
const char* pluginVendor = "me";
const char* pluginRequires = THE_VERSION_STRING;
};
如果我输入:
export MY_VERSION="2010.4"
pluginRequires
将设置为“2010.4”,即使MY_VERSION
在运行时设置为其他内容。
更新:(2月21日)感谢大家的帮助。有用。 由于我使用Rake作为构建系统,我的每个CFLAGS都是一个ruby变量。值也需要以引号结束。因此,对我来说,gcc命令行需要如下所示:
gcc file.c -o file -D"PLUGIN_VERSION=\"6.5\""
这意味着这是我的Rakefile:
"-D\"PLUGIN_VERSION=\\\"#{ENV['MY_VERSION']}\\\"\""
答案 0 :(得分:13)
如果我没记错的话,你可以在编译时使用命令行参数-D
和gcc到#define
的值。
即:
$ gcc file.c -o file -D"THE_VERSION_STRING=${THE_VERSION_STRING}"
答案 1 :(得分:0)
在下面的代码中,我希望在编译时从环境变量MY_VERSION的值中获取THE_VERSION_STRING的值
不,你不能这样做。提取环境变量的唯一方法是在运行时使用getenv()
函数。您需要显式提取值并将其复制到pluginRequires
。
如果你想要编译时常量的效果,那么你必须在Seth建议的编译器命令行上指定定义。