Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
O MinGW não é testado como parte do processo de CI do repositório vcpkg, portanto, regressões podem ocorrer como parte das atualizações da biblioteca. PRs melhorando o suporte são bem-vindos!
Trigêmeos da comunidade Mingw-w64
vcpkg inclui x64, x86, arm64 e trigêmeos da comunidade arm para Mingw-w64. Eles não dependem do Visual Studio e podem ser usados nativamente no Windows, bem como para compilação cruzada em outros sistemas operacionais. Existem duas variantes de cada trigêmeo, selecionando entre ligação estática e dinâmica. Espera-se que as ferramentas reais (g++ etc.) sejam nomeadas com prefixos específicos.
Arquitetura | Trigêmeos da Comunidade VCPKG | Prefixo do nome da ferramenta |
---|---|---|
x64 | x64-mingw-dinâmico, x64-mingw-estático | x86_64-w64-mingw32- |
x86 | x86-mingw-dinâmico, x86-mingw-estático | i686-w64-mingw32- |
arm64 | arm64-mingw-dinâmico, arm64-mingw-estático | AARCH64-W64-MINGW32- |
arm | arm-mingw-dynamic, arm-mingw-static | armv7-w64-mingw32- |
Esses trigêmeos não são testados por integração contínua, então muitas portas não são construídas, e mesmo as portas existentes podem quebrar em atualizações de portas. Por isso, o envolvimento da comunidade é primordial!
Usando o Mingw-w64 nativamente no Windows
Com o MSYS2, é possível criar facilmente um ambiente completo para a construção de portas com o Mingw-w64 em um PC com Windows.
Ao criar software para ambientes Windows nativos, você deve usar um subsistema mingw do MSYS2 e instalar alguns pacotes (com um prefixo específico) para esse subsistema.
arquitetura | Trigêmeos VCPKG | subsystem | prefixo do pacote |
---|---|---|---|
x64 | x64-mingw-dinâmico, x64-mingw-estático | MinGW64 | MINGW-W64-x86_64- |
x86 | x86-mingw-dinâmico, x86-mingw-estático | MinGW32 | MINGW-W64-I686- |
Após a instalação básica do MSYS2, você precisará instalar alguns pacotes adicionais para desenvolvimento de software, por exemplo, para x64:
pacman -S --needed git base-devel mingw-w64-x86_64-toolchain
O subsistema ativo é selecionado executando o aplicativo MSYS2 MinGW ou alterado em um terminal em execução por
source shell mingw64 # for x64, or "mingw32" for x86
O bootstrapping de vcpkg deve ser feito executando bootstrap-vcpkg.bat. Este comando irá baixar o vcpkg oficial.exe.
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat
Para construir pacotes, você precisa dizer ao vcpkg que deseja usar o triplete mingw. Isso pode ser feito de diferentes maneiras. Quando o Visual Studio não está instalado, você também deve definir o host triplet para mingw. Isso é necessário para resolver dependências de host. Por conveniência, você pode usar variáveis de ambiente para definir ambos os trigêmeos:
export VCPKG_DEFAULT_TRIPLET=x64-mingw-dynamic
export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-dynamic
Agora você pode testar sua configuração:
./vcpkg install zlib
Como evitar misturar diferentes instalações
O projeto MSYS2 avisa explicitamente que "misturar em programas de outras instalações MSYS2, instalações Cygwin, cadeias de ferramentas do compilador ou mesmo vários outros programas não é suportado e provavelmente quebrará as coisas de maneiras inesperadas." Por exemplo, a passagem adequada de argumentos de linha de comando com citação e fuga pode falhar.
Mas as portas vcpkg criam implicitamente instalações MSYS2, por exemplo, para e para várias outras ferramentas de compilação necessárias para pkg-config
lidar com pacotes baseados no autoconf. Em particular, quando as portas precedem o diretório de ferramentas para a PATH
variável de ambiente, isso pode alterar qual ferramenta com um nome específico é realmente invocada e como os argumentos são passados entre as ferramentas.
Para atenuar esses problemas ao trabalhar com uma instalação MSYS2 completa, tente manter os diretórios do subsistema msys (/usr/bin
, ) fora da PATH
variável de ambiente, bin
conforme encontrado pelo vcpkg. No bash, você pode modificar o PATH
apenas para uma única chamada de vcpkg:
PATH="${PATH/:\/usr\/bin:\/bin:/:}" ./vcpkg install libpq
Como alternativa, você pode executar vcpkg a partir de um prompt de comando regular, depois de adicionar apenas o diretório mingw desejado (por exemplo C:\msys64\mingw64\bin
, ) ao PATH
.
Ao usar vcpkg para CI com imagens padrão em Pipelines do Azure, Ações do Github ou similares, o padrão PATH
pode conter mais diretórios que criam uma combinação de programas MSYS2 de instalações diferentes. Talvez você queira definir o desejado PATH
manualmente ou remover diretórios que contenham sh.exe
, bash.exe
msys-2.0.dll
ou cygwin1.dll
.
Usando o Mingw-w64 para criar programas do Windows em outros sistemas
Você pode usar os trigêmeos da comunidade vcpkg mingw com toolchains em computadores que não sejam Windows para compilar software para ser executado no Windows. Muitas distribuições Linux oferecem tais cadeias de ferramentas em pacotes opcionais com um sufixo ou prefixo mingw-w64. Como exemplo, para distribuições baseadas em Debian, você começaria com este comando de instalação para o toolchain x64:
sudo apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64
As versões empacotadas das cadeias de ferramentas Mingw-w64 em distribuições Linux podem ser versões mais antigas que carecem de alguns recursos úteis ou correções de bugs. Uma cadeia de ferramentas independente alternativa é oferecida pela MXE.
Para inicialização vcpkg, clone o repositório github e execute o bootstrap-vcpkg.sh
script:
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install zlib:x64-mingw-dynamic