Como Instalar o Crow C++ no Windows

🐦‍ Crie lindas aplicações Web velozes e de forma fácil.


Como Instalar o Crow C++ no Windows


Crow C++ é um framework C++ para criar serviços web HTTP ou Websocket. Ele usa roteamento semelhante ao Flask do Python, o que facilita o uso.

Para mais informações veja o vídeo que fizemos sobre o Crow.

Na documentação do Crow orienta você usar o Conan ou vcpkg, mas esses gerenciadores de pacotes para C e C++ não são nada amigáveis, então…

Nesse artigo vamos ver como instalar e rodar o Crow no Windows do zero e FUNCIONANDO!


📦 Dependências

Antes de mais nada você vai precisar ter instalado no seu sistema os seguintes utiltários.

Clique nos links para um tutorial de instalação no Windows.

Usando o WinGet se resume em instalar via PowerShell com os comandos:

winget install --id Git.Git -e --source winget
winget install --id=Kitware.CMake  -e
winget install --id=MartinStorsjo.LLVM-MinGW.UCRT  -e
winget install -e --id Python.Python.3.11 --scope machine

Só o GCC que você precisará seguir o tutorial.

Detalhe é que após instalá-lo, existe um CMake dentro da pasta MinGW, então para haver compatibilidade de versão renomei o cmake para outro nome.

Exemplo: Se você rodar o comando: Get-Command cmake no terminal aparecerá esse caminho:

 Get-Command cmake

CommandType     Name           Version    Source
-----------     ----           -------    ------
Application     cmake.exe      4.0.1.0    C:\mingw64\bin\cmake.exe

Então, vc precisa renomear para outro nome, para que ele execute o cmake da outra instalação(a da Kitware), renomei assim, por exemplo:

Rename-Item -Path "C:\mingw64\bin\cmake.exe" -NewName "DISABLED-cmake.exe"

Quando vc rodar de novo o comando: Get-Command cmake agora aparecerá outro caminho: C:\Program Files\CMake\bin\cmake.exe e versão também:

 Get-Command cmake

CommandType     Name          Version    Source
-----------     ----          -------    ------
Application     cmake.exe     3.26.0.0   C:\Program Files\CMake\bin\cmake.exe

Feito isso, agora vamos instalar o Crow C++!


📥 Instalando o Crow

Antes de mais nada crie uma pasta para seu projeto Crow, exemplo no Desktop e entre na pasta do seu projeto:

cd "$env:USERPROFILE\Desktop"
New-Item -ItemType Directory "MyProjectCrow"
Set-Location "MyProjectCrow"

O Crow depende da biblioteca ASIO em tempo de compilação e em tempo de execução, então, faça o download da ASIO nesse link:

Clique na opção Download como na imagem:

A versão atual(de acordo com a postagem desse artigo é 1.30.0, mas se houver uma mais recente, escolha-a)

ASIO Download

  • Você será redicionado para o https://sourceforge.net/projects/asio/files/asio/1.30.2.

  • No SourceForge faça o download da versão asio-1.30.2.zip.

  • Após finalizado descompacte em: Extrair aqui ele criará uma pasta descompactada de nome: asio-1.30.2, renomei ela para asio somente.

  • Recorte essa pasta descompactada que você renomeou para asio/ e cole dentro do seu projeto.

Agora, dentro da sua pasta MyProCrow, clone o repositório do Crow

git clone https://github.com/CrowCpp/Crow

Mova a asio que está no seu projeto/pasta MyProCrow para dentro da pasta Crow que você clonou:

Move-Item -Path "asio" -Destination "Crow"

E entre na pasta do Crow:

cd Crow

🛠️ Agora vamos Compilar o Crow junto com a ASIO

Eu organizo todos meus include em uma pasta na unidade C:\, assim como no Unix fica em /usr/include no Windows em guardo tudo(SFML3, SFML2, tmxlite, FFmpeg,…) em C:\Includes.

Enão crie essa pasta e juntamente com a subpasta C:\Includes\crow com esse comando, pois é nesse caminho que vamos instalar o Crow e a ASIO:

New-Item -Path "C:/Includes/crow" -ItemType Directory

Agora, ainda dentro da pasta Crow no seu projeto compile com esse comando:

Termina com um ponto(.) no final, esse ponto no final é importante também copiá-lo!

cmake -G "Unix Makefiles" -B build -DCMAKE_INSTALL_PREFIX="C:/Includes/crow" -DASIO_INCLUDE_DIR="./asio" -DCMAKE_CXX_FLAGS="-I./asio" -DCROW_BUILD_EXAMPLES=OFF -DCROW_BUILD_TESTS=OFF .

A saída será mais ou menos essa:

-- The CXX compiler identification is GNU 15.1.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/mingw64/bin/c++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- No build type selected, default to Release
-- Found Python3: C:/Program Files/Python311/python.exe (found version "3.11.9") found components: Interpreter
-- Found asio: C:/Users/USERNAME/Desktop/MyProjectCrow/Crow/asio
-- Configuring done (13.6s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/USERNAME/Desktop/MyProjectCrow/Crow/build

Esse --build é quase insignificante, pois não gera arquivos, mas rode como garantia:

cmake --build build

Agora é só instalar:

cmake --install build
Ele vai mover para esses caminhos:
-- Install configuration: "Release"
-- Installing: C:/Includes/crow/include
-- Installing: C:/Includes/crow/include/crow
-- Installing: C:/Includes/crow/include/crow/app.h
-- Installing: C:/Includes/crow/include/crow/ci_map.h
-- Installing: C:/Includes/crow/include/crow/common.h
-- Installing: C:/Includes/crow/include/crow/compression.h
-- Installing: C:/Includes/crow/include/crow/exceptions.h
-- Installing: C:/Includes/crow/include/crow/http_connection.h
-- Installing: C:/Includes/crow/include/crow/http_parser_merged.h
-- Installing: C:/Includes/crow/include/crow/http_request.h
-- Installing: C:/Includes/crow/include/crow/http_response.h
-- Installing: C:/Includes/crow/include/crow/http_server.h
-- Installing: C:/Includes/crow/include/crow/json.h
-- Installing: C:/Includes/crow/include/crow/logging.h
-- Installing: C:/Includes/crow/include/crow/middleware.h
-- Installing: C:/Includes/crow/include/crow/middlewares
-- Installing: C:/Includes/crow/include/crow/middlewares/cookie_parser.h
-- Installing: C:/Includes/crow/include/crow/middlewares/cors.h
-- Installing: C:/Includes/crow/include/crow/middlewares/session.h
-- Installing: C:/Includes/crow/include/crow/middlewares/utf-8.h
-- Installing: C:/Includes/crow/include/crow/middleware_context.h
-- Installing: C:/Includes/crow/include/crow/mime_types.h
-- Installing: C:/Includes/crow/include/crow/multipart.h
-- Installing: C:/Includes/crow/include/crow/multipart_view.h
-- Installing: C:/Includes/crow/include/crow/mustache.h
-- Installing: C:/Includes/crow/include/crow/parser.h
-- Installing: C:/Includes/crow/include/crow/query_string.h
-- Installing: C:/Includes/crow/include/crow/returnable.h
-- Installing: C:/Includes/crow/include/crow/routing.h
-- Installing: C:/Includes/crow/include/crow/settings.h
-- Installing: C:/Includes/crow/include/crow/socket_acceptors.h
-- Installing: C:/Includes/crow/include/crow/socket_adaptors.h
-- Installing: C:/Includes/crow/include/crow/task_timer.h
-- Installing: C:/Includes/crow/include/crow/TinySHA1.hpp
-- Installing: C:/Includes/crow/include/crow/utility.h
-- Installing: C:/Includes/crow/include/crow/version.h
-- Installing: C:/Includes/crow/include/crow/websocket.h
-- Installing: C:/Includes/crow/include/crow.h
-- Installing: C:/Includes/crow/lib/cmake/Crow/CrowTargets.cmake
-- Installing: C:/Includes/crow/lib/cmake/Crow/Findasio.cmake
-- Installing: C:/Includes/crow/lib/cmake/Crow/CrowConfig.cmake

É necessário também mover a pasta asio/ que está dentro de Crow/ para lá também:

Move-Item -Path "asio" -Destination "C:\Includes\"

Para finalizar, basta sair de Crow e remover a pasta clonada:

cd ..
Remove-Item -Path "Crow" -Recurse -Force

Pronto! Agora vamos testar nosso projeto!


⚙️ Rodar um Hello, World! no servidor com Crow

Agora sua pasta/projeto MyProjectCrow está vazia. Vamos criar um arquivo main.cpp dentro dela, exemplo com VSCode:

code main.cpp

E cole isso dentro:

#include "crow.h"

int main(){
    crow::SimpleApp app;

    CROW_ROUTE(app, "/")([](){
        return "Hello world";
    });

    app.port(18080).multithreaded().run();
}

Salve o arquivo e volte para o terminal e compile seu projeto com esse comando:

Confirme esses caminhos porque pode ser que você tenhas subpastas. Logo dentro de asio tem que tem uma include: C:/Includes/asio/include.

g++ main.cpp -I"C:/Includes/asio/include" -I"C:/Includes/crow/include" -lws2_32 -lmswsock -o app.exe

Vai gerar o arquivo: .\app.exe, execute-o:

Vai aparecer isso:

 .\app.exe
(2025-06-20 03:58:29) [INFO    ] Crow/master server is running at http://0.0.0.0:18080 using 2 threads
(2025-06-20 03:58:29) [INFO    ] Call `app.loglevel(crow::LogLevel::Warning)` to hide Info level logs.

Ele manda você acessar no seu navegador o endereço: http://0.0.0.0:18080, mas isso pode falhar, ACESSE NA VERDADE:

http://localhost:18080

O endereço 0.0.0.0 é um placeholder que significa “todas as interfaces de rede” — ou seja, o servidor está ouvindo em todas as interfaces do seu computador, mas não é um IP válido para acessar diretamente pelo navegador.

Vai aparecer essa mensagem no navegador:

Crow running

Para finalizar a conexão pressione Ctrl + C no terminal.

Então, está tudo certo!

Eu venho fazendo muitas coisas com Crow, uma delas é esse Tasks++/ToDO++ com Crow C++, Banco de Dados, HTMX e TailwindCSS:

🎥 Veja o Vídeo


Para mais informações acesse:


windows desenvolvimentoweb cpp web crowcpp


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!