2015-08-30 2 views
0

J'ai un test d'intégration DB que j'utilise avec Boost Build. Le test nécessite des arguments de ligne de commande (nom d'utilisateur de la base de données, mot de passe). Quelle est la meilleure façon de configurer cela via Boost Build d'une manière configurable par l'utilisateur (via les variables d'environnement, bjam commandline, user-config.jam)?Boost Build: Utiliser une fonctionnalité ou une variable

Je sais que je peux le faire avec des variables:

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

Cela peut être réglé via une ligne de commande le (bjam -s DB_PASS=pass) ou via une variable d'environnement. D'autre part, Boost Build tend à faire la plus grande partie de sa configuration via le mécanisme de caractéristiques. Je pourrais probablement définir une nouvelle fonctionnalité et obtenir les données de configuration au bon endroit de cette façon.

Quels sont les avantages et les inconvénients de chaque approche? Lequel dois-je prendre? Si caractéristiques: comment ferais-je cela? NB: Le test actuel est dans un Jamfile utilisé par le Jamroot, donc pas directement dans le fichier racine.

Répondre

2

Je voudrais juste utiliser votre suggestion de variables. Ils offrent beaucoup de flexibilité. Je ne vois pas comment une "fonctionnalité" dans ce cas pourrait aider les choses.

+0

Je suis d'accord avec Michael. Vous utiliseriez des fonctionnalités lorsqu'il est probable ou raisonnable de construire avec des valeurs différentes et lorsque les produits de construction seront différents. Debug ou release, partagé ou statique, gcc ou clang, sont autant de fonctionnalités raisonnables. Pour le mot de passe de la base de données, vous ne voulez probablement pas d'ensembles de binaires différents pour des mots de passe différents. –