Bonjour.
Je cherche une lib qui soit capable de parser les options fournies soit par une ligne de commande, soit par des fichiers de config.
Je sais que boost::program_options existe, mais… me retrouver avec un binaire final dont la taille est multipliée par 4 (de 58k à 212k pour être exact, en mode release…) juste pour l'avoir utilisé me gêne "quelques peu".
Quelqu'un à une idée?
# getopt/getopts
Posté par NeoX . Évalué à 4.
il me semble que c'est getopt/getopts qui gere ca.
[^] # Re: getopt/getopts
Posté par freem . Évalué à 1. Dernière modification le 15 novembre 2015 à 14:45.
Merci de la suggestion (je n'avais pas pensé à getopt), par contre si je ne me trompe pas (je ne m'en suis jamais servi), getopt ne sert que pour la ligne de commande, non?
Bon, on peut constituer une ligne de commande à partir d'un fichier de conf, mais ça fait un peu "hacky" si tu vois ce que je veux dire…
Et j'admets que j'apprécie pas mal le fait que boost::program_options puisse prendre aussi bien un fichier que la ligne de commande comme source.
À voir… J'ai un peu fouillé de mon côté, rien trouvé de probant, je pense que je vais faire la mienne à ce train la.
[^] # Re: getopt/getopts
Posté par Sytoka Modon (site web personnel) . Évalué à 2.
Utilise les namelist du Fortran, c'est compatible fichier et ligne de commande ;-)
http://stackoverflow.com/questions/17581416/c-equivalent-to-fortran-namelist
[^] # Re: getopt/getopts
Posté par freem . Évalué à 2.
J'avoue ne pas être très chaud à l'idée d'incorporer un langage supplémentaire juste pour ça… surtout un langage que je ne maîtrise pas :)
Je suis parti pour implémenter ma propre lib du coup.
Ça va être l'affaire de 2 classes, 3 templates, 5-6 fonctions et on verra bien le résultat…
[^] # Ça peut peut-être aider...
Posté par Claude SIMON (site web personnel) . Évalué à 1.
J'ai implémenté un tel système dans mon framework ; j'en ai parlé dans ce journal.
Le système a un peu évolué depuis ; la courte description sur cette page est plus à jour.
L'implémentation en question n'est pas disponible en tant que bibliothèque dédiée, mais les sources étant accessibles, ça peut peut-être quand même être utile…
Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: Ça peut peut-être aider...
Posté par freem . Évalué à 2.
Merci, mais du coup j'ai fini le coeur du système hier. Je voulais consolider le code ce matin et le publier, mais manque de bol mon Xorg à décidé de ne plus répondre et de ne rien logguer… donc suis en mode dépannage pour le moment >.<
[^] # Re: getopt/getopts
Posté par NeoX . Évalué à 2.
en meme temps chez toi, tu dois avoir à gerer 5 sources, reparties en 3 cas (potentiellement 3 librairies) :
et c'est generalement dans cet ordre que les bons logiciels gerent leurs parametres.
du coup tu peux utiliser une bibliotheque specialisé gestion de fichier pour les 3 premiers cas.
enchainer avec une bibliotheque pour lire l'environnement
et enfin utiliser getopts pour parser la ligne de commande
# J'ai écrit cette bibliothèque… pour OCaml
Posté par Michaël (site web personnel) . Évalué à 2.
J'ai écrit Gasoline une bibliothèque pour OCaml qui fait exactement ça, peut-être que tu pourrais t'en inspirer si tu veux écrire ta propre bibliothèque.
Je définis un type pour les “sources de paramètres” comme la ligne de commande, l'environnement ou des fichiers de configuration. Ensuite le driver de la fonction principale du programme se charge d'analyser toutes ces sources et de les hiérarchiser pour déterminer les paramètres du programme. Du côté application on définit simplement des variables fontionnelles qui sont ensuite examinées par la procédure principale.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.