2015-08-30 12 views
0

У меня есть тест интеграции БД, который я запускаю с помощью Boost Build. Тест нуждается в некоторых командных аргументах (имя пользователя БД, пароль). Каков наилучший способ установить через Boost Build способом, который настраивается пользователем (через переменные среды, bjam commandline, user-config.jam)?Boost Build: используйте функцию или переменную

Я знаю, что могу сделать это с помощью переменных:

import os ; 
local DB_PASS = [ os.environ DB_PASS ] ; 
run dbtest : test.cpp : --dbpass $(DB_PASS) ; 

Это можно установить с помощью командной строки (bjam -s DB_PASS=pass) или через переменную окружения.

С другой стороны, Boost Build имеет тенденцию выполнять большую часть своей конфигурации с помощью механизма функций. Возможно, я мог бы определить новую функцию и получить данные конфигурации в нужном месте.

В чем преимущества и недостатки каждого подхода? Который я должен взять? Если функции: как мне это сделать?

NB: Фактический тест находится в файле Jamfile, который используется Jamroot, поэтому прямо не находится в корневом файле.

ответ

2

Я бы просто использовал ваше предложение переменных. Они обеспечивают большую гибкость. Я не вижу, как «функция» в этом случае поможет.

+0

Я согласен с Майклом. Вы должны использовать функции, когда это возможно или разумно строить с разными значениями, и когда продукты сборки будут разными. Отладка или выпуск, общий или статический, gcc или clang - все разумные функции. Для пароля базы данных вы, вероятно, не хотите использовать разные наборы двоичных файлов для разных паролей. –