【问题标题】:Visual Studio 2008 Environment Variable Use at Compile Time编译时使用 Visual Studio 2008 环境变量
【发布时间】:2012-03-15 19:48:05
【问题描述】:

我想在我们的 Jenkins 系统定义的两个环境变量(BUILD_NUMBER 和 NODE_NAME)中进行编译,以便保存这些编译时间值,然后在我们的程序运行时访问这些保存的值(无论用户是什么目前已将 BUILD_NUMBER 和 NODE_NAME 设置为。)

这可能使用 Visual Studio 2008 吗?如果我可以完全在我们的代码中完成此操作,并且无需修改编译系统来传递任何内容,那就太好了。

【问题讨论】:

    标签: c++ visual-studio-2008 environment-variables


    【解决方案1】:

    实现这项工作的一种方法是添加一个预构建步骤,该步骤执行具有类似内容的批处理文件

    >jenkins.h echo #define BUILD_NUMBER %BUILD_NUMBER%
    

    然后从您的源代码#include "jenkins.h" 并可以立即访问在编译时嵌入的宏BUILD_NUMBER。

    【讨论】:

    • 这是一个有趣的建议。如果我确实需要修改我的构建环境,因为 Visual Studio 不支持,我想我会先尝试这种方法。
    【解决方案2】:

    您可以将变量设为全局变量并使用getenv 检索它们:

    const char* buildNumber = getenv("BUILD_NUMBER");
    const char* nodeName = getenv("NODE_NAME");
    

    虽然这不是在编译时完成的,但如果你只在运行时使用变量,那应该没关系。

    编辑:

    您可以将BUILD_NUMBER="$(BUILD_NUMBER)" 添加到项目属性中的预处理器指令中。

    【讨论】:

    • 我认为这是不正确的,但我可能弄错了。 getenv() 不会在运行时返回值吗?我想要编译时间值。
    • @BrianStinar 是的。我提供了另一种选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    相关资源
    最近更新 更多