Compilando programas em C++
Neste capítulo, vamos aprender a compilar e executar programas com um único arquivo e projetos em C++.
No terminal, abra a pasta c_cpp_projects
que criamos anteriormente para guardar nossos projetos.
Programa
Crie um diretório chamado binary_tree
, entre nele e abra-o no Visual Studio Code.
Lembre-se de ativar o perfil C/C++
que criamos no capítulo Configurando o VSCode.
Crie um arquivo chamado main.cpp
e adicione o seguinte código:
Para compilar o código, utilizamos o comando clang++
, em vez de apenas clang
.
A estrutura do comando é a mesma.
Para executar o programa, basta chamar o arquivo binário gerado:
Projeto
Vamos editar este projeto para de fato representar uma árvore binária.
Crie duas pastas dentro do projeto: tree
e node
.
- Dentro de tree, crie um arquivo
tree.cpp
e umtree.hpp
. - Dentro de node, crie um arquivo
node.cpp
e umnode.hpp
.
- Na raiz do projeto, crie os arquivos
.clang-format
e.clang-tidy
.
- Use os snippets para preencher o conteúdo dos arquivos.
Acesse o projeto pelo repositório do livro. Nele, você encontrará a implementação de uma árvore binária e seus nós. Copie o conteúdo de todos os arquivos para os respectivos arquivos criados.
Compilação
Para compilar o projeto, precisamos passar todos os arquivos para o compilador.
Fazemos isso usando o comando clang++
da seguinte maneira:
<arquivos.cpp>
: todos os arquivos.cpp
do projeto.<pastas_com_arquivos.hpp>
: todas as pastas que contêm arquivos.hpp
do projeto.<executavel>
: nome do arquivo binário gerado.
Ou seja, precisamos especificar a localização de todos os arquivos que desejamos incluir e compilar. Dado que nosso projeto tem mais de uma pasta internamente, precisamos especificar a localização de todas elas. Execute o seguinte:
Para executar o programa, basta chamar o arquivo binário gerado:
Se tudo estiver correto, você verá os nós da árvore binária sendo impressos no terminal em ordem crescente.
Configurações
Assim como fizemos para projetos em C, podemos configurar tarefas de compilação para C++ no Visual Studio Code.
Se você seguiu os passos recomendados no capítulo Configurando o VSCode, já está configurada uma tarefa de compilação para C++.
Infelizmente, essa tarefa apenas compila arquivos .cpp
que estejam na raiz do projeto.
Uma vez que nosso projeto tem arquivos em pastas diferentes, precisamos especificar a localização de todos eles.
Dessa forma, a tarefa de compilação global não é suficiente para compilar o projeto binary_tree
.
Precisamos criar um arquivo de tarefa personalizado para isso.
Nós configuramos também alguns snippets para facilitar a construção do arquivo tasks.json
.
Crie uma pasta chamada .vscode
na raiz do projeto e um arquivo chamado tasks.json
dentro dela.
Garanta que o perfil C/C++
esteja ativo e abra o arquivo tasks.json
.
Digite nele tasks-json
e pressione Enter para preencher o arquivo com o snippet.
Então, dentro do vetor tasks
, digite cpp-build-task
e pressione Enter para preencher o arquivo com o snippet.
Observe o campo args
.
Ele contém os argumentos que passamos para o comando de compilação.
Atualmente, ele recebe todos os arquivos .cpp
que estejam na raiz do projeto.
Precisamos passar, além desses, todos os arquivos .cpp
que estão nas pastas tree
e node
.
Para isso, adicionamos uma linha para cada pasta, iniciando com o atalho ${workspaceFolder}
, o qual indica a pasta raiz do projeto.
O arquivo tasks.json
deve ficar da forma abaixo, assim como no repositório do livro.
Poderemos então usar o atalho Ctrl + Shift + B para abrir o painel de tarefas de compilação.
Então selecione a Clang: build C++ project (all files in root) (Linux, Local)
.
O Visual Studio Code compilará o projeto e mostrará o resultado no terminal integrado.