我想在兩個環境變量(BUILD_NUMBER和NODE_NAME)中編譯我們的Jenkins系統定義的值,以便保存這些編譯時間值,然後將這些保存的值作爲我們的程序進行訪問正在運行(不管用戶目前將BUILD_NUMBER和NODE_NAME設置爲什麼)。在編譯時使用Visual Studio 2008環境變量
這可能使用Visual Studio 2008嗎?如果我完全可以在我們的代碼中完成這項工作,並且不需要修改編譯系統來傳遞任何內容,那將會很好。你可以做這項工作
我想在兩個環境變量(BUILD_NUMBER和NODE_NAME)中編譯我們的Jenkins系統定義的值,以便保存這些編譯時間值,然後將這些保存的值作爲我們的程序進行訪問正在運行(不管用戶目前將BUILD_NUMBER和NODE_NAME設置爲什麼)。在編譯時使用Visual Studio 2008環境變量
這可能使用Visual Studio 2008嗎?如果我完全可以在我們的代碼中完成這項工作,並且不需要修改編譯系統來傳遞任何內容,那將會很好。你可以做這項工作
一種方式是通過添加預生成步驟執行的東西一個批處理文件,像
>jenkins.h echo #define BUILD_NUMBER %BUILD_NUMBER%
從源
然後你#include "jenkins.h"
並有宏觀BUILD_NUMBER
立即訪問該在編譯時烘烤。
您可以進行變量的全局和使用getenv
檢索它們:
const char* buildNumber = getenv("BUILD_NUMBER");
const char* nodeName = getenv("NODE_NAME");
這不是在編譯時完成的,雖然,但如果你只在運行時使用的變量,它不應該物。
編輯:
你可以在項目屬性添加BUILD_NUMBER="$(BUILD_NUMBER)"
到您的預處理指令。
我相信這是不正確的,但我可能會誤解。 getenv()不會在運行時返回一個值嗎?我想要編譯時間值。 – 2012-03-15 19:59:14
@BrianStinar是的。我提供了另一種選擇。 – 2012-03-15 20:00:55
這是一個有趣的建議。如果我需要修改我的構建環境,因爲Visual Studio不會支持這個,我想我會先嚐試這種方法。 – 2012-03-15 20:08:10