繁体   English   中英

如何将环境变量带入构建以在#ifdef中使用

[英]How to bring an environment variable into build to use in #ifdef

是否可以让OS环境变量定义一个宏以在VS2013中的C ++代码中使用?

例如,我可能希望设置环境变量DEV_LOG_DIRECTORY ,并在我的C ++源文件中执行以下操作:

#ifdef DEV_LOG_DIRECTORY
    logging::set_dir(DEV_LOG_DIRECTORY)
#endif

我想保持实际值,和宏是否定义或没有, 了Visual Studio项目文件,使不同的开发人员可以设置这个他们的感受,而不是由其他开发商的偏好的影响。 我发现的所有内容都说在项目选项中指定了此选项,但是在这种情况下不起作用。

如果有更好的方法可以实现我的目标,那么我可以选择!

您确定要在编译时执行此操作吗? 即使可能(并且我也不知道是否可能),环境变量也将仅存在于开发人员的计算机上,并且仅在该计算机上进行编译时才会被处理。 将编译后的可执行文件移动到另一台计算机后, set_dir()值将被硬编码到应用程序中,但是实际的目标文件夹可能在当前计算机上不存在。 您可能希望改为从实际运行您的应用的操作系统中读取环境变量,然后在定义后使用它,例如:

char LogDir[32767] = {0};
if (GetEnvironmentVariableA("LOG_DIRECTORY", LogDir, _countof(LogDir)) > 0)
{
    logging::set_dir(LogDir);
}
else if (GetLastError() != ERROR_ENVVAR_NOT_FOUND)
{
    // error reading the environment variable...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM