C++ Insights - Veja seu código com os olhos de um compilador

Utiliza LLVM/Clang, Ninja e LLD para construir


C++ Insights - Veja seu código com os olhos de um compilador


C++ Insights é uma ferramenta baseada em clang que faz uma transformação do seu código fonte no código fonte visto pelo compilador.

O objetivo é tornar visíveis as coisas, que normalmente e intencionalmente acontecem nos bastidores. É sobre a mágica que o compilador faz para que as coisas funcionem. Ou olhando através das classes de um compilador.

Por exemplo:

Suponhamos que você possui esse código:

#include <iostream>

int main(){
  std::string hello {"Hello, World!"};
  std::cout << hello << '\n';
  return EXIT_SUCCESS;
}

Na verdade esse código é visto assim pelo seu compilador:

#include <iostream>

int main()
{
  std::string hello = std::basic_string<char>{"Hello, World!", std::allocator<char>()};
  std::operator<<(std::operator<<(std::cout, hello), '\n');
  return 0;
}


Instalação e Utilização

O C++ Insights está disponível online, mas se você quiser construir e instalar no seu sistema, há alguns detalhes . Você precisará das seguintes ferramentas de construção:

  • CMake
  • LLVM/clang++, só compila com ele.
  • Ninja
  • lld , essa é a mais importante de todas, o C++ Insights informa parâmetros para o linker que o GNU ld não é compatível. 😞

Exemplo no Ubuntu:

sudo apt install clang++ lld ninja-build cmake

Depois é só clonar e construir com o seguinte comando:

git clone https://github.com/andreasfertig/cppinsights.git
mkdir build && cd build
cmake -G"Ninja" ../cppinsights
ninja

Se você não conseguir, tente assim:

Perceba que o linker e o compilador são informados via parâmetro para o CMake, se quiser ainda reforçar, rode antes do cmake os comando: export CXX=$(which clang++) e para o linker: env LD=$(which lld) .

git clone https://github.com/andreasfertig/cppinsights
cd cppinsights
mkdir build && cd build

cmake -G"Ninja" -DCMAKE_LINKER=$(which lld) -DCMAKE_CXX_COMPILER=$(which clang++) -DCMAKE_PREFIX_PATH=$(which clang++ | sed 's/\/clang++//g') ..
ninja

Você ainda pode tentar com o make: cmake -G "Unix Makefiles" .. e mais os outros parâmetros acima.

Eu penei para compilar da forma: “somente com essas ferramentas”,… Enfim, boa sorte em compilar, você vai precisar!

Se você conseguiu compilar e instalar, a utilização é bem simples, exemplo para analisar um código:

insights <YOUR_CPP_FILE> -- -std=c++17

Se você NÃO conseguiu compilar e instalar, relaxe! Você pode usar online no endereço:

https://cppinsights.io/

Tenho certeza que é bem mais fácil! 😃

Para mais informações acesse também o GitHub:

https://github.com/andreasfertig/cppinsights


cpp cppdaily


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!