web-dev-qa-db-fra.com

Comment créer des éléments de type fenêtre simplistes dans un programme en ligne de commande?

Lorsque j'exécute Sudo dpkg-reconfigure lightdm dans le terminal, je vois un menu liste simpliste ressemblant à une fenêtre. Y at-il un moyen de faire quelque chose comme ça en C++?

Cela ressemble à quelque chose comme:
enter image description here

4
kees broeksma

L’interface de type fenêtre, contenue dans un terminal, que vous voyez lorsque vous exécutez Sudo dpkg-reconfigure lightdm est codée à l’aide de = ncurses bibliothèque . Donc, si vous voulez que votre programme fournisse une interface qui ressemble à cela, vous pouvez aussi utiliser ncurses.

Pour créer un logiciel utilisant ncurses dans Ubuntu, vous devez obtenir le package fichiers d'en-tête approprié. À moins que vous ne fassiez de la compilation croisée, ce sera:

  • Pour les programmes utilisant des chaînes traditionnelles où la plupart des caractères sont représentés par un seul octet (par exemple, TF-8 ), utilisez libncurses5 Install libncurses5 .

    C'est probablement ce que vous voulez si vos chaînes sont des tableaux de char (en C et d'autres langages basés sur C) ou std::string (en C++).

  • Pour les programmes nécessitant une prise en charge de caractères étendus, utilisez libncursesw5 Install libncursesw5 .

    Vous en aurez particulièrement besoin si vos chaînes sont des tableaux de wchar_t (en C et d’autres langages basés sur C) ou std::wstring, std::u16string ou std::u32string (en C++) .

Facultativement, pour vous aider à déboguer votre programme, vous pourriez également vouloir des symboles de débogage (pour les débogueurs tels que gdb ). Pour cela, installez libncurses5-dbg Install libncurses5-dbg ou libncursesw5-dbg Install libncursesw5-dbg aussi.

Voir aussi la page ncurses dans Ubuntu sur Launchpad , qui contient la liste des principaux packages ncurses dans Ubuntu ainsi que des informations sur la version de chaque version actuellement prise en charge par Ubuntu.

Lorsque vous construisez votre programme avec GCC (par exemple, avec les commandes gcc ou g++,), donnez-lui l'argument -lncurses ou -lncursesw, généralement à la fin de la commande. . Ceci lie votre programme à la bibliothèque ncurses. Par exemple:

g++ -Wall -g -o hello hello.cpp -lncurses

Cela compile hello.cpp pour produire un exécutable avec les symboles de débogage (-g), appelé hello (-o hello), avertissement sur la plupart des choses pour lesquelles vous souhaitez un avertissement sur (-Wall), et création d'un lien vers la bibliothèque ncurses normale (caractère non large) (-lncurses).

5
Eliah Kagan