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