Использование переменной среды Visual Studio 2008 во время компиляции - PullRequest
2 голосов
/ 15 марта 2012

Я хотел бы скомпилировать в две переменные окружения (BUILD_NUMBER и NODE_NAME), которые наша система Jenkins определяет, чтобы эти значения времени компиляции были сохранены, а затем к этим сохраненным значениям был получен доступ во время выполнения нашей программы (независимо от того, какой пользователь в настоящее время установил BUILD_NUMBER и NODE_NAME в.)

Возможно ли это с помощью Visual Studio 2008? Было бы неплохо, если бы я мог выполнить это полностью в нашем коде, и мне не пришлось бы изменять систему компиляции, чтобы что-то передавать.

Ответы [ 2 ]

5 голосов
/ 15 марта 2012

Один из способов сделать эту работу - добавить шаг предварительной сборки, который выполняет командный файл с чем-то вроде

>jenkins.h echo #define BUILD_NUMBER %BUILD_NUMBER%

Затем из вашего источника вы #include "jenkins.h" и получите немедленный доступ кмакрос BUILD_NUMBER, который запекается во время компиляции.

2 голосов
/ 15 марта 2012

Вы можете сделать переменные глобальными и использовать getenv для их извлечения:

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

Это не делается во время компиляции, но если вы используете переменные только во время выполнения, то этоне должно иметь значения.

РЕДАКТИРОВАТЬ:

Вы можете добавить BUILD_NUMBER="$(BUILD_NUMBER)" к директивам препроцессора в свойствах проекта.

...