Configurando o Visual Studio Code
Podemos aprimorar nosso ambiente de desenvolvimento configurando o Visual Studio Code para trabalhar com o CMake. Isso nos permitirá compilar e executar nossos projetos diretamente do editor, sem precisar abrir o terminal.
Snippets
Seção intitulada “Snippets”A estrutura dos arquivos CMakeLists.txt
é semelhante, independentemente do projeto que você estiver criando.
Então, podemos criar snippets para facilitar sua criação.
Para isso, abra a paleta de comandos do Visual Studio Code com Snippets: Configure Snippets
.
Então, selecione New Global Snippets file...
.
Quando solicitado, digite o nome do arquivo como cmake
e pressione
Copie o seguinte código para o arquivo aberto.
{ "CMakeLists.txt (library)": { "body": [ "## Library", "add_library(my_second_library)", "", "## Sources", "target_sources(my_second_library", " PUBLIC", " my_second_library.hpp", " PRIVATE", " my_second_library.cpp", ")", "", "## Define module", "target_include_directories(my_second_library", " PUBLIC", " \\$<BUILD_INTERFACE:\\${CMAKE_CURRENT_SOURCE_DIR}>", ")", "", "## Link libraries", "target_link_libraries(my_second_library", " PRIVATE", " my_first_library", ")", "", ], "description": "CMakeLists.txt file to configure a static library in CMake.", "isFileTemplate": true, "prefix": "cmake-library", }, "CMakeLists.txt (main)": { "body": [ "## Version", "cmake_minimum_required(VERSION 3.12...3.31)", "", "if (\\${CMAKE_VERSION} VERSION_LESS 3.12)", " cmake_policy(VERSION \\${CMAKE_MAJOR_VERSION}.\\${CMAKE_MINOR_VERSION})", "endif ()", "", "## Project", "project(my_project", " LANGUAGES CXX", ")", "", "## Environment", "set(CMAKE_CXX_STANDARD 23)", "set(CMAKE_CXX_STANDARD_REQUIRED ON)", "set(CMAKE_CXX_EXTENSIONS OFF)", "", "## Warnings", "if (CMAKE_CXX_COMPILER_ID MATCHES \"GNU|Clang|AppleClang\")", " add_compile_options(", " -Wall -Wextra # Reasonable warnings", " -Wpedantic # Strict ISO C++ compliance", " -Wconversion # Warn on implicit type conversions", " -Wsign-conversion # Warn on signed/unsigned mismatches", " )", "elseif (CMAKE_CXX_COMPILER_ID STREQUAL \"MSVC\")", " add_compile_options(", " /W4 # High warning level", " /permissive- # Enforce standards compliance", " )", "endif()", "", "## Directories", "add_subdirectory(src)", "", ], "description": "CMakeLists.txt file to configure a project in CMake.", "isFileTemplate": true, "prefix": "cmake-main", }, "CMakeLists.txt (src)": { "body": [ "## Executable", "add_executable(my_project", " main.cpp", ")", "", "## Directories", "add_subdirectory(my_first_library)", "add_subdirectory(my_second_library)", "", "## Linking libraries", "target_link_libraries(my_project", " PRIVATE", " my_second_library", ")", "", ], "description": "CMakeLists.txt file to configure the source directory in CMake.", "isFileTemplate": true, "prefix": "cmake-src", }, "Debug launcher (CMake) (Local)": { "body": [ "{", " \"name\": \"LLDB: launch CMake project (Local)\",", " \"type\": \"lldb\",", " \"request\": \"launch\",", " \"program\": \"\\${command:cmake.launchTargetPath}\",", " \"args\": [],", " \"cwd\": \"\\${workspaceFolder}\",", " \"terminal\": \"console\",", " \"preLaunchTask\": \"CMake: build\"", "}", ], "description": "Launch a program compiled by CMake using LLDB", "prefix": "cmake-launch", },}
Lembre-se de salvar o arquivo. Feche e abra o VSCode para que as alterações tenham efeito.
O arquivo cmake.code-snippets
contém os seguintes snippets:
cmake-main
: cria um arquivoCMakeLists.txt
para a raiz do projeto;cmake-src
: cria um arquivoCMakeLists.txt
para o diretóriosrc
;cmake-library
: cria um arquivoCMakeLists.txt
para um módulo que você criar dentro do diretóriosrc
;cmake-launch
: cria uma entrada de configuração de depuração para o arquivolaunch.json
do projeto.
Configuração
Seção intitulada “Configuração”Podemos configurar o VSCode para que a extensão CMake Tools execute as tarefas de configuração do projeto.
Primeiro, delete a pasta build
que criamos anteriormente.
Então, no VsCode, clique no ícone do CMake Tools na barra lateral esquerda. Ele é formado por um triângulo e uma chave de boca. Essa seção mostra a configuração de compilação do projeto.

Então, no menu que se abrir no centro superior da tela, selecione o kit Clang
.
Tome cuidado para não selecionar o kit Clang-cl
, uma vez que ele é usado para compilar para Windows.

Caso não haja o compilador Clang
, verifique se ele está instalado no seu sistema e suas variáveis de ambiente estão configuradas corretamente.
Então, escolha a opção [Scan for kits]
para atualizar a lista de kits disponíveis.
Compilando
Seção intitulada “Compilando”Para configurar a compilação do projeto, abra a paleta de comandos do VSCode com CMake: Configure
, então selecione essa opção.
Já para compilar o projeto, abra a paleta de comando, busque por CMake: Build
e selecione essa opção.

Você também pode compilar o projeto clicando no botão Build
, que tem um ícone de engrenagem no canto inferior esquerdo da tela.

O VsCode imprimirá na seção de Output
o processo de compilação do projeto.

Você verá que a pasta build
foi criada novamente.
Dentro dela, estarão os arquivos de compilação do projeto, e o executável oriented_graph
gerado.
Executando
Seção intitulada “Executando”Com o projeto compilado, você pode executá-lo diretamente pelo VsCode. Clique no botão com o ícone de play na barra inferior do VsCode. Ele tem a função de Launch.

Você também pode acessar a mesma opção por meio da paleta de comandos do VsCode, pressionando CMake: Run without Debugging
.
Na seção de Terminal
do VsCode, você verá a saída do programa oriented_graph
, que foi executado.

Depurando
Seção intitulada “Depurando”Para depurar o projeto, garanta que você tem a extensão CodeLLDB instalada.
Por padrão, o VsCode tenta usar o depurador GDB
para depuração.
Dessa forma, a extensão faz a compatibilidade para usarmos o LLDB
.
Nele, adicionamos uma nova configuração de depuração para rodar um programa sem antes compilá-lo (dado que o CMakeTools já fez isso). Também definimos algumas configurações específicas para o CMake. O nome dessa configuração é LLDB: launch C++ project.
Agora, adicione um ponto de depuração na linha 12
do arquivo main.cpp
.
Então, clique no botão com o ícone de besouro na barra inferior do VsCode.
Ele tem a função de Debug.

Você também pode acessar a mesma opção por meio da paleta de comandos do VsCode, pressionando CMake: Debug
.
O VsCode abrirá um terminal externo e executará o programa oriented_graph
em modo de depuração.

Tarefa personalizada
Seção intitulada “Tarefa personalizada”Se você precisar customizar a configuração de depuração, como adicionar argumentos ou variáveis de ambiente, você pode fazer isso por meio do arquivo launch.json
, que fica dentro da pasta .vscode
do seu projeto.
mkdir -p .vscodetouch .vscode/launch.json
Use o snippet launch-json
para inicializar o arquivo com o seguinte código.
{ "configurations": [], "version": "0.2.0"}
Então, dentro do vetor configurations
, use o snippet cmake-launch
para criar uma configuração de depuração personalizada.
O conteúdo do arquivo será como o seguinte.
{ "configurations": [ { "name": "LLDB: launch CMake project (Local)", "type": "lldb", "request": "launch", "program": "${command:cmake.launchTargetPath}", "args": [], "cwd": "${workspaceFolder}", "terminal": "console", "preLaunchTask": "CMake: build" } ], "version": "0.2.0"}
A entrada preLaunchTask
define qual tarefa de compilação deve ser executada antes de iniciar a depuração.
A extensão CMake Tools
define um conjunto de tarefas padrão, como a CMake: build
, que usamos.
Isso faz com que, antes de iniciar a depuração, o projeto seja compilado.
Configurar uma tarefa de execução personalizada tem outra vantagem.
A interface de depuração comum do VSCode, que pode ser acessada por meio do atalho