C++ Instalar no Windows e macOS
O Windows e o macOS não trazem um compilador C++ pronto para usar, mas instalar um é questão de alguns cliques e um comando. No Windows há três bons caminhos: o MSYS2 (com o mesmo g++ do Linux), o Visual Studio da Microsoft e o WSL (um Linux dentro do Windows). No macOS, as Command Line Tools da Apple trazem o clang++, e o Homebrew traz o GCC. Nesta aula você vai ver cada caminho, passo a passo, e compilar o primeiro programa.
- Qual caminho escolher no Windows: MSYS2, Visual Studio ou WSL.
- Instalar o g++ com o MSYS2 (
pacman -S mingw-w64-ucrt-x86_64-gcc) e usá-lo fora do terminal do MSYS2. - Instalar o Visual Studio Community com a carga de trabalho "Desenvolvimento para desktop com C++" e escolher a versão do C++.
- Instalar o WSL e seguir a aula do Linux.
- No macOS:
xcode-select --install(o clang da Apple) ebrew install gcc. - Compilar e rodar o mesmo programa nos três sistemas.
A máquina do guia é um Linux, então as telas e saídas desta página não foram produzidas nela: elas seguem os passos oficiais do MSYS2, da Microsoft, da Apple e do Homebrew (conferidos em outubro de 2026), mas números de versão, nomes de botões e mensagens podem variar um pouco no seu computador. Por isso as saídas aparecem em caixas de arquivo, e não no terminal da Ana. Os comandos de compilação, esses sim, são os mesmos de todo o guia.
Antes de tudo: o terminal
O guia compila os programas pelo terminal (a janela de texto onde você digita comandos), porque assim você vê exatamente o que acontece. Cada sistema tem o seu:
| Sistema | Terminal | Como abrir |
|---|---|---|
| Windows | Terminal do Windows (com PowerShell) ou o terminal do MSYS2 | Menu Iniciar → digite "Terminal" (ou "MSYS2 UCRT64") |
| macOS | Terminal | Cmd+Espaço → digite "Terminal" |
Windows
Qual caminho escolher?
| Caminho | O que você ganha | Tamanho | Bom para |
|---|---|---|---|
| 1. MSYS2 (g++ do MinGW-w64) | O mesmo g++ do Linux e do guia, com as mesmas opções e mensagens. Gera programas .exe normais do Windows. | Algumas centenas de MB | Seguir o guia com o VS Code ou outro editor. É o caminho recomendado. |
| 2. Visual Studio Community | O compilador da Microsoft (MSVC) e um ambiente completo, com depurador visual. Gratuito para estudantes, uso pessoal e equipes pequenas. | Vários GB | Quem quer um "tudo em um" ou vai trabalhar com programas e jogos para Windows (a Unreal Engine usa o Visual Studio). |
| 3. WSL | Um Ubuntu de verdade dentro do Windows: os comandos do guia funcionam igualzinho, inclusive make e gdb. | Alguns GB | Quem quer o ambiente exatamente igual ao do guia, ou vai programar para servidores Linux. |
Não precisa escolher um só: muita gente tem o Visual Studio e o MSYS2 (ou o WSL) no mesmo computador.
Caminho 1: MSYS2, passo a passo
O MSYS2 é um pequeno "mundo Linux" para Windows: um terminal e um gerenciador de pacotes, o pacman (o mesmo do Arch Linux), de onde você instala o MinGW-w64, o GCC adaptado para gerar programas do Windows.
- Entre em msys2.org e baixe o instalador (um arquivo como
msys2-x86_64-20260927.exe; a data no nome muda). É preciso Windows 10 ou 11, de 64 bits. - Rode o instalador e aceite a pasta sugerida,
C:\msys64. Clique em Avançar até o fim e depois em Concluir. - Abre-se um terminal chamado MSYS2 UCRT64 (se não abrir, procure por ele no menu Iniciar). UCRT64 é o "ambiente" recomendado: programas de 64 bits, usando a biblioteca moderna do Windows (a Universal C Runtime).
- Nesse terminal, instale o g++:
pacman -S mingw-w64-ucrt-x86_64-gcc
Opacmanmostra a lista de pacotes e pergunta:: Proceed with installation? [Y/n]("continuar com a instalação?"). Tecle Enter. - Confira:
$ g++ --version g++.exe (Rev6, Built by MSYS2 project) 16.2.0 Copyright (C) 2026 Free Software Foundation, Inc. ...
- pacman
- O gerenciador de pacotes do MSYS2.
- -S
- Sync: baixar e instalar.
- mingw-w64-ucrt-x86_64-gcc
- O nome do pacote: o GCC (
gcc) do MinGW-w64 (mingw-w64), para o ambiente UCRT64 (ucrt), em processadores de 64 bits (x86_64). Ele traz ogcce og++.
O MSYS2 costuma ter a versão mais nova do GCC (em outubro de 2026, a 16.2). Mais tarde, para as aulas de Make e GDB, instale o kit completo: pacman -S mingw-w64-ucrt-x86_64-toolchain. Para atualizar tudo: pacman -Syu.
Usar o g++ fora do terminal do MSYS2
O g++ funciona dentro do terminal UCRT64. Para usá-lo também no PowerShell, no Terminal do Windows e no VS Code, acrescente a pasta dele ao PATH (a lista de pastas onde o Windows procura programas):
- Menu Iniciar → digite variáveis de ambiente → "Editar as variáveis de ambiente para sua conta".
- Selecione Path → Editar → Novo → digite
C:\msys64\ucrt64\bin→ OK em todas as janelas. - Feche e abra de novo o terminal (o PATH só é lido quando o terminal abre) e confira com
g++ --version.
Compilar no Windows
O comando é o mesmo do guia. A diferença é que o executável ganha a extensão .exe sozinho, e, no PowerShell, você roda o programa com .\ em vez de ./:
PS C:\Users\Ana\cpp> g++ -std=c++23 -Wall -Wextra ola.cpp -o ola PS C:\Users\Ana\cpp> .\ola.exe Olá, mundo!
Repare que o GCC 16 do MSYS2 usa o C++20 quando você não passa -std (o g++ 15 do guia usa o C++17). Com o -std=c++23 do comando padrão, os dois se comportam igual (aula Versões do C++).
Caminho 2: Visual Studio Community
O Visual Studio (não confunda com o VS Code, que é só um editor: aula Editores e IDEs) é o ambiente completo da Microsoft. A edição Community é gratuita para estudantes, uso pessoal, projetos de código aberto e equipes pequenas.
- Baixe o instalador em visualstudio.microsoft.com (Visual Studio Community) e rode-o.
- Na tela Cargas de trabalho, marque Desenvolvimento para desktop com C++. Ela traz o compilador MSVC, as bibliotecas do Windows, o depurador e o CMake. Não precisa marcar mais nada.
- Clique em Instalar. São vários gigabytes: pode demorar.
- Abra o Visual Studio → Criar um projeto → Aplicativo de Console (o de C++) → dê um nome → Criar. O projeto já vem com um "Hello World".
- Para compilar e rodar: Ctrl+F5 (Iniciar Sem Depuração). Uma janela de console abre com a saída e espera você teclar algo antes de fechar.
A versão do C++ no Visual Studio: projetos novos no Visual Studio 2026 já usam o C++20. Para o std::println e o resto do C++23, abra Projeto → Propriedades → C/C++ → Linguagem → Padrão de Linguagem C++ e escolha a opção mais recente (a que termina em /std:c++latest). Sem projeto (compilando direto no terminal), o compilador cl da Microsoft usa o C++14 se você não pedir outro.
O compilador da Microsoft também funciona no terminal: abra o Developer PowerShell for VS (instalado junto, no menu Iniciar) e use o comando cl. As opções têm outra forma:
cl /std:c++latest /EHsc /W4 ola.cpp .\ola.exe
- cl
- O compilador da Microsoft (de compile and link, compilar e ligar).
- /std:c++latest
- A versão do C++: a mais nova que ele conhece. É o
-std=c++23do g++. - /EHsc
- Liga o tratamento de exceções do jeito padrão do C++. Sem ele, o
cldá um aviso ao usar o<iostream>. - /W4
- Nível 4 de avisos: o equivalente aproximado do
-Wall -Wextra. - ola.cpp
- O arquivo. O executável sai com o mesmo nome:
ola.exe.
As mensagens de erro do MSVC são diferentes das do g++ e do Clang (têm códigos como C2143), mas dizem a mesma coisa. O guia mostra as do g++; quando uma não fizer sentido, procure o código no site da Microsoft.
Caminho 3: WSL, um Linux dentro do Windows
O WSL (Windows Subsystem for Linux, "subsistema Windows para Linux") roda um Linux de verdade ao lado do Windows, sem máquina virtual para configurar. Com ele, tudo o que o guia mostra no terminal funciona igual.
- Abra o Terminal (ou PowerShell) como administrador: clique com o botão direito no menu Iniciar → "Terminal (Administrador)".
- Digite:
wsl --install
Esse comando instala o WSL e o Ubuntu. Reinicie o computador quando ele pedir. - Depois de reiniciar, abra o Ubuntu no menu Iniciar. Na primeira vez, ele pede um nome de usuário e uma senha para o Linux (não precisam ser os do Windows).
- Pronto: você está num terminal Ubuntu. Siga a aula Instalar no Linux:
sudo apt updateesudo apt install build-essential.
Os arquivos do Windows aparecem dentro do Linux em /mnt/c/ (o disco C:). Mas, para compilar mais rápido, guarde os seus programas na pasta pessoal do Linux (~/cpp). O VS Code abre essa pasta direto com a extensão WSL (aula Editores e IDEs).
macOS
No Mac, o compilador "oficial" é o Clang da Apple, que vem nas Command Line Tools (as "ferramentas de linha de comando" do Xcode). Você não precisa instalar o Xcode inteiro, que é enorme: as ferramentas bastam.
1. Command Line Tools: xcode-select --install
- Abra o Terminal e digite:
xcode-select --install
- Uma janela pergunta se você quer instalar as ferramentas de linha de comando. Clique em Instalar e aceite a licença. O download leva alguns minutos.
- Confira:
% clang++ --version Apple clang version 17.0.0 (clang-1700.3.19.1) Target: arm64-apple-darwin25.0.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
O arm64 na linha Target indica um Mac com chip Apple (M1, M2, M3…); num Mac antigo, com Intel, aparece x86_64. O % no começo da linha é o prompt do Terminal do macOS (o shell zsh), no papel do $ do Linux.
g++ é o Clang disfarçado
As Command Line Tools também instalam um comando chamado g++, mas ele é só um atalho para o Clang da Apple: g++ --version responde Apple clang version …. Para o guia, isso não é problema: as opções principais são as mesmas. Só não estranhe se as mensagens de erro no seu Mac se parecerem mais com as do editor do guia (que também usa o Clang) do que com as do terminal da Ana.
Compile e rode exatamente como no Linux:
% clang++ -std=c++23 -Wall -Wextra ola.cpp -o ola % ./ola Olá, mundo!
2. Opcional: o GCC pelo Homebrew
Se você quiser o mesmo compilador do guia (o GCC), instale-o pelo Homebrew, o gerenciador de pacotes mais usado no Mac:
- Instale o Homebrew, se ainda não tiver, com o comando que está na página brew.sh (copie de lá; ele começa com
/bin/bash -c "$(curl -fsSL …)"). No fim, o instalador mostra dois ou três comandos para colar no Terminal: cole-os, eles colocam obrewno PATH. - Instale o GCC:
brew install gcc
- O Homebrew não ocupa o nome
g++(que é o Clang da Apple): o GCC vem com o número da versão no nome. Em outubro de 2026, a versão do Homebrew é a 16.2:% g++-16 --version g++-16 (Homebrew GCC 16.2.0) 16.2.0 ... % g++-16 -std=c++23 -Wall -Wextra ola.cpp -o ola % ./ola Olá, mundo!
Nos comandos do guia, troque g++ por g++-16 (ou pelo número que o seu Homebrew instalou). Para atualizar: brew upgrade gcc.
Testando: o mesmo programa nos três sistemas
Seja qual for o caminho, o teste é o mesmo: o ola.cpp da aula Instalar no Linux e, em seguida, o teste do C++23 com std::println. Os comandos lado a lado:
| Sistema e caminho | Compilar | Rodar |
|---|---|---|
| Linux, WSL | g++ -std=c++23 -Wall -Wextra ola.cpp -o ola | ./ola |
| Windows, MSYS2 (terminal UCRT64) | g++ -std=c++23 -Wall -Wextra ola.cpp -o ola | ./ola (ou ./ola.exe) |
| Windows, MSYS2 (PowerShell) | g++ -std=c++23 -Wall -Wextra ola.cpp -o ola | .\ola.exe |
| Windows, Visual Studio | Ctrl+F5, ou cl /std:c++latest /EHsc /W4 ola.cpp | (abre sozinho) ou .\ola.exe |
| macOS, Command Line Tools | clang++ -std=c++23 -Wall -Wextra ola.cpp -o ola | ./ola |
| macOS, Homebrew | g++-16 -std=c++23 -Wall -Wextra ola.cpp -o ola | ./ola |
Um detalhe importante: o executável de um sistema não roda no outro. O ola.exe do Windows não abre no Mac, e o ola do Linux não abre no Windows. O código-fonte é o mesmo; o programa precisa ser compilado em cada sistema (a aula Como o C++ Vira Programa explica por quê).
Enquanto a instalação não termina, rode o programa abaixo no editor do guia. Ele usa o pré-processador (aula O Pré-processador) para descobrir para qual sistema foi compilado: cada compilador define um nome diferente (_WIN32 no Windows, __APPLE__ no Mac, __linux__ no Linux), e o #if escolhe a linha certa antes mesmo da compilação. Compile o mesmo arquivo no seu computador depois e compare.
Experimente: rode e veja o que o editor do guia responde. Ele não é Windows, nem Mac, nem Linux: o programa roda dentro do navegador, num formato chamado WebAssembly (WASI). No terminal da Ana, com o g++, o mesmo programa mostra Compilado para: Linux.
#include <iostream>
int main() {
#if defined(_WIN32)
std::cout << "Compilado para: Windows\n";
#elif defined(__APPLE__)
std::cout << "Compilado para: macOS\n";
#elif defined(__linux__)
std::cout << "Compilado para: Linux\n";
#elif defined(__wasi__)
std::cout << "Compilado para: WebAssembly (o editor do guia)\n";
#else
std::cout << "Compilado para: outro sistema\n";
#endif
}
$ g++ -std=c++23 -Wall -Wextra sistema.cpp -o sistema $ ./sistema Compilado para: Linux
Quando dá errado
As mensagens abaixo são as que aparecem em português nos sistemas configurados em português; o texto exato pode variar com a versão (ilustrativo).
O termo 'g++' não é reconhecido como nome de cmdlet, função, arquivo de script ou programa operável
O que significa: o PowerShell não achou o g++. Ou ele não foi instalado, ou a pasta C:\msys64\ucrt64\bin não está no PATH, ou o terminal foi aberto antes de você mudar o PATH.
Como consertar: confira se g++ --version funciona no terminal MSYS2 UCRT64. Se funciona lá, o problema é o PATH: refaça os passos de "Usar o g++ fora do terminal do MSYS2" e abra um terminal novo. Atenção: se você instalou pelo terminal "MSYS2 MSYS" (e não o UCRT64), o pacote foi para outro lugar; use o UCRT64.
Olá, mundo! em vez de Olá, mundo!
O que significa: o programa escreveu o á corretamente, no formato UTF-8 (dois bytes), mas o console do Windows interpretou esses bytes numa codificação antiga, e cada byte virou um caractere estranho. O terminal do MSYS2 não tem esse problema; o PowerShell e o Prompt de Comando antigos, às vezes, têm.
Como consertar: use o Terminal do Windows (que é UTF-8), ou digite chcp 65001 antes de rodar o programa (troca o console para UTF-8). A aula Acentos e UTF-8 explica em detalhes.
cannot open output file ola.exe: Permission denied
O que significa: "não foi possível abrir o arquivo de saída ola.exe: permissão negada". No Windows, um .exe que está rodando fica "trancado": o ligador não consegue escrever a versão nova por cima. Também acontece quando o antivírus está examinando o arquivo recém-criado.
Como consertar: feche o programa que ainda está aberto (uma janela de console esquecida, por exemplo) e compile de novo. Se for o antivírus, espere alguns segundos.
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun
O que significa: as ferramentas de linha de comando não estão instaladas, ou foram desativadas por uma atualização grande do macOS (acontece com frequência depois de mudar de versão do sistema).
Como consertar: rode xcode-select --install de novo e clique em Instalar.
g++ --version ainda diz Apple clang
O que significa: é o esperado. O Homebrew instala o GCC com o número da versão no nome, para não esconder o g++ da Apple, de que outros programas dependem.
Como consertar: use g++-16 (confira o número com ls $(brew --prefix)/bin/g++-*).
Referência
| Caminho | Instalar | Compilador | Conferir |
|---|---|---|---|
| Windows, MSYS2 | msys2.org + pacman -S mingw-w64-ucrt-x86_64-gcc | g++ (GCC) | g++ --version |
| Windows, Visual Studio | Instalador + "Desenvolvimento para desktop com C++" | cl (MSVC) | cl (sem nada) no Developer PowerShell |
| Windows, WSL | wsl --install + sudo apt install build-essential | g++ (GCC, no Ubuntu) | g++ --version |
| macOS, Command Line Tools | xcode-select --install | clang++ (Apple Clang) | clang++ --version |
| macOS, Homebrew | brew install gcc | g++-16 (GCC) | g++-16 --version |
Exercícios
1. O pacote do MSYS2
Complete o comando que instala o g++ no ambiente UCRT64 do MSYS2:
2. As ferramentas da Apple
Complete o comando que instala as Command Line Tools no macOS:
3. No Visual Studio Installer, qual carga de trabalho você marca para programar em C++?
4. No Mac, a Ana digitou g++ --version e apareceu Apple clang version …. O que isso quer dizer?
5. A Ana compilou o ola.cpp no Windows e mandou o ola.exe para um amigo com Mac. O que acontece?
Missão final: pronto para o Nível 1
Missão: a Ana escolheu o Windows com o MSYS2. Complete o programa para ele mostrar as duas linhas abaixo, cada uma com um std::println (troque os ???):
Sistema: Windows Compilador: g++ do MSYS2
#include <print>
int main() {
std::println("Sistema: ???");
std::println("Compilador: ???");
}
#include <print>
int main() {
std::println("Sistema: Windows");
std::println("Compilador: g++ do MSYS2");
}
Resumo
- Windows, recomendado: MSYS2 +
pacman -S mingw-w64-ucrt-x86_64-gcc, no terminal UCRT64; para usar no PowerShell e no VS Code, coloqueC:\msys64\ucrt64\binno PATH. - Windows, tudo em um: Visual Studio Community com "Desenvolvimento para desktop com C++"; para o C++23, escolha
/std:c++latestnas propriedades do projeto. - Windows, igual ao guia:
wsl --install, e depois a aula do Linux. - macOS:
xcode-select --installtraz oclang++(e umg++que é o Clang);brew install gcctraz o GCC de verdade comog++-16. - O comando de compilação é o mesmo em todo lugar; o executável de um sistema não roda no outro.
- Próximo passo: escolher onde escrever o código, em Editores e IDEs.