pgModeler no OSX

Em alguns cenários de desenvolvimento, não faz sentido depender de instaladores prontos – principalmente quando se precisa de versões mais recentes ou controle sobre o ambiente.

Esse é o caso do pgModeler, uma ferramenta de modelagem para PostgreSQL que pode ser compilada diretamente no macOS.

Importante: embora o pgModeler seja open-source (GPLv3), os binários oficiais são distribuídos comercialmente. A redistribuição de binários exige o cumprimento das obrigações da GPL (como disponibilização do código-fonte), o que nem sempre é viável em ambientes corporativos. Por isso, o build local costuma ser a abordagem mais adequada.


Sobre o pgModeler

O pgModeler é uma ferramenta open-source para modelagem de bancos de dados PostgreSQL, permitindo criar diagramas, gerar scripts SQL e realizar engenharia reversa de estruturas existentes.

Ele é desenvolvido em C++ com interface baseada em Qt, o que exige um processo de build específico no Windows.

Por que compilar manualmente?

Embora existam versões pré-compiladas, o build local é, na prática, a opção mais segura em ambientes controlados.

Atenção: a distribuição de binários do pgModeler não é proibida pela licença, mas implica obrigações da GPLv3 (como fornecer o código-fonte correspondente e manter a mesma licença). Além disso, os binários oficiais fazem parte do modelo comercial do projeto.

Além disso, compilar garante:

  • Uso da versão mais atual
  • Controle sobre dependências
  • Padronização do ambiente de desenvolvimento

Dependências necessárias

Antes do build, são necessários:

  • Xcode Command Line Tools: fornece clang, clang++, make, SDK do macOS e ferramentas de compilação.
  • Homebrew: gerenciador de pacotes para instalar Qt e libpq.
  • Qt: framework C++ usado pela interface gráfica do pgModeler.
  • libpq: biblioteca cliente oficial do PostgreSQL, usada para conexão com bancos PostgreSQL.

1) Download do código-fonte

git clone https://github.com/nullptrlabs/pgmodeler
cd pgmodeler

O comando git clone baixa o código-fonte do pgModeler a partir do repositório oficial mantido pela Nullptr Labs.


2) Instalação das ferramentas de linha de comando da Apple

xcode-select --install

Esse comando instala o pacote Xcode Command Line Tools, necessário para compilar projetos C/C++ no macOS.

Após instalar, confirme:

xcode-select -p
which clang++
clang++ --version

O esperado é algo como:

/Library/Developer/CommandLineTools
/usr/bin/clang++

3) Instalação das dependências com Homebrew

brew install qt libpq

Esse comando instala:

  • qt: bibliotecas e ferramentas Qt, incluindo qmake;
  • libpq: headers e biblioteca cliente do PostgreSQL.

Em Macs Apple Silicon, o Homebrew normalmente usa:

/opt/homebrew

Por isso os caminhos usados no build apontam para:

/opt/homebrew/opt/libpq/include
/opt/homebrew/opt/libpq/lib/libpq.dylib

4) Configuração do build com qmake

qmake -r pgmodeler.pro \
  QMAKE_CC=/usr/bin/clang \
  QMAKE_CXX=/usr/bin/clang++ \
  QMAKE_MAC_SDK=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk \
  PGSQL_INC=/opt/homebrew/opt/libpq/include \
  PGSQL_LIB=/opt/homebrew/opt/libpq/lib/libpq.dylib

Explicação dos parâmetros:

  • qmake -r pgmodeler.pro: gera os Makefiles recursivamente para o projeto e subprojetos.
  • QMAKE_CC=/usr/bin/clang: define o compilador C.
  • QMAKE_CXX=/usr/bin/clang++: define o compilador C++.
  • QMAKE_MAC_SDK=…: força o uso do SDK das Command Line Tools.
  • PGSQL_INC=…: informa onde estão os headers do PostgreSQL, como libpq-fe.h.
  • PGSQL_LIB=…: informa onde está a biblioteca libpq.dylib.

5) Compilação

make -j$(sysctl -n hw.ncpu)

Esse comando compila o pgModeler usando todos os núcleos disponíveis da máquina.


6) Instalação

sudo make install

Instala o aplicativo em:

/Applications/pgModeler.app

Considerações finais

Compilar o pgModeler no macOS garante maior controle sobre o ambiente, dependências e versão utilizada.

Essa abordagem é especialmente útil quando se deseja:

  • usar versões mais recentes do código-fonte;
  • evitar dependência de instaladores prontos;
  • padronizar o ambiente de desenvolvimento;
  • diagnosticar problemas de compatibilidade com Qt, PostgreSQL ou SDK do macOS.

Referências


Publicado

em

por

Tags: