Como eu crio elementos simplistas semelhantes a janelas em um programa de linha de comando?

4

Quando executo sudo dpkg-reconfigure lightdm no terminal, vejo um menu de lista simplista semelhante a uma janela. Existe uma maneira de fazer algo parecido em C ++?

Isso se parece com algo como:

    
por kees broeksma 26.08.2014 / 17:52

1 resposta

5

A interface de janela baseada em texto, contida em um terminal, que você vê quando executa sudo dpkg-reconfigure lightdm é codificada usando ncurses biblioteca . Então, se você quer que seu programa forneça uma interface parecida com essa, você também pode usar ncurses.

Para construir software usando ncurses no Ubuntu, você deve obter o pacote de arquivos de cabeçalho apropriado. A menos que você esteja compilando, isso será:

  • Para programas que usam sequências tradicionais, em que a maioria dos caracteres é representada por um único byte (por exemplo, UTF-8 ), use libncurses5 .

    Isso é provavelmente o que você deseja se suas strings forem matrizes de char (em C e outros idiomas baseados em C) ou std::string (em C ++).

  • Para programas que requerem amplo suporte a caracteres, use libncursesw5 .

    Você precisará disso especialmente se suas strings forem matrizes de wchar_t (em C e outros idiomas baseados em C) ou std::wstring , std::u16string ou std::u32string (em C ++).

Opcionalmente, para ajudar a depurar seu programa, você pode também querer símbolos de depuração (para depuradores como gdb ). Para isso, instale libncurses5-dbg ou libncursesw5-dbg também.

Veja também as ncurses na página do Ubuntu no Launchpad , que contém uma lista dos principais pacotes ncurses no Ubuntu como bem como informações de versão para cada versão do Ubuntu atualmente suportada.

Ao criar seu programa com o GCC (por exemplo, com os comandos gcc ou g++ ), forneça o argumento -lncurses ou -lncursesw , geralmente no final do comando. Isso vincula seu programa à biblioteca ncurses. Por exemplo:

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

Isso compila hello.cpp para produzir um executável com símbolos de depuração ( -g ), chamado hello ( -o hello ), alertando sobre a maioria das coisas que você pode querer um aviso sobre ( -Wall ) e vinculação à biblioteca ncurses regular (não de caracteres largos) ( -lncurses ).

    
por Eliah Kagan 26.08.2014 / 18:39