영어로 읽기

다음을 통해 공유


Mingw-w64

참고

MinGW는 vcpkg 리포지토리의 CI 프로세스의 일부로 테스트되지 않으므로 라이브러리 업데이트의 일부로 회귀가 발생할 수 있습니다. 지원을 개선하는 PR을 환영합니다!

Mingw-w64 커뮤니티 트리플렛

vcpkg에는 Mingw-w64용 x64, x86, arm64 및 arm 커뮤니티 트리플렛이 포함되어 있습니다. Visual Studio에 종속되지 않으며 Windows에서 기본적으로 사용할 수 있을 뿐만 아니라 다른 운영 체제에서 교차 컴파일에도 사용할 수 있습니다. 정적 연결과 동적 연결 중에서 선택하는 두 가지 변형이 각 트리플렛에 있습니다. 실제 도구(g++ 등)는 특정 접두사를 사용하여 이름이 지정되어야 합니다.

아키텍처 vcpkg 커뮤니티 트리플렛 도구 이름 접두사
X64 x64-mingw-dynamic, x64-mingw-static x86_64-w64-mingw32-
x86 x86-mingw-dynamic, x86-mingw-static i686-w64-mingw32-
arm64 arm64-mingw-dynamic, arm64-mingw-static aarch64-w64-mingw32-
arm arm-mingw-dynamic, arm-mingw-static armv7-w64-mingw32-

이러한 삼중항은 연속 통합을 통해 테스트되지 않으므로 많은 포트가 빌드되지 않으며 기존 포트도 포트 업데이트에서 중단될 수 있습니다. 이 때문에 커뮤니티 참여가 가장 중요합니다!

Windows에서 기본적으로 Mingw-w64 사용

MSYS2를 사용하면 Windows PC에서 Mingw-w64를 사용하여 포트를 빌드하기 위한 전체 환경을 쉽게 만들 수 있습니다.

네이티브 Windows 환경을 위한 소프트웨어를 빌드할 때 MSYS2의 mingw 하위 시스템을 사용하고 이 하위 시스템에 대한 일부 패키지(특정 접두사 포함)를 설치해야 합니다.

아키텍처 vcpkg triplets subsystem 패키지 접두사
X64 x64-mingw-dynamic, x64-mingw-static mingw64 mingw-w64-x86_64-
x86 x86-mingw-dynamic, x86-mingw-static mingw32 mingw-w64-i686-

MSYS2의 기본 설치 후에는 소프트웨어 개발을 위한 몇 가지 추가 패키지(예: x64)를 설치해야 합니다.

pacman -S --needed git base-devel mingw-w64-x86_64-toolchain

활성 하위 시스템은 MSYS2 MinGW 앱을 실행하여 선택되거나 실행 중인 터미널에서 다음을 통해 변경됩니다.

source shell mingw64   # for x64, or "mingw32" for x86

vcpkg의 부트스트랩은 bootstrap-vcpkg.bat를 실행하여 수행되어야 합니다. 이 명령은 공식 vcpkg.exe를 다운로드합니다.

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat

패키지를 빌드하려면 vcpkg에 mingw triplet를 사용하라고 알려야 합니다. 이 작업은 여러 가지 방법으로 수행할 수 있습니다. Visual Studio가 설치되지 않은 경우 호스트 트리플렛도 mingw로 설정해야 합니다. 호스트 종속성을 해결하는 데 필요합니다. 편의를 위해 환경 변수를 사용하여 두 개의 세 쌍둥이를 모두 설정할 수 있습니다.

export VCPKG_DEFAULT_TRIPLET=x64-mingw-dynamic
export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-dynamic

이제 다음 설정을 테스트할 수 있습니다.

./vcpkg install zlib

다른 설치를 혼합하지 않는 방법

MSYS2 프로젝트는 "다른 MSYS2 설치, Cygwin 설치, 컴파일러 도구 체인 또는 기타 다양한 프로그램의 프로그램을 혼합하는 것은 지원되지 않으며 예기치 않은 방식으로 중단될 수 있습니다."라고 명시적으로 경고 합니다. 예를 들어 따옴표 및 이스케이프를 사용하여 명령줄 인수를 적절하게 전달하지 못할 수 있습니다.

그러나 vcpkg 포트는 자동 구성을 기반으로 패키지를 처리하는 데 필요한 다양한 다른 빌드 도구와 같은 pkg-config MSYS2 설치를 암시적으로 만듭니다. 특히 포트가 도구 디렉터리를 환경 변수 앞에 추가하면 PATH 특정 이름을 가진 도구가 실제로 호출되고 도구 간에 인수가 전달되는 방식이 변경될 수 있습니다.

전체 MSYS2 설치로 작업할 때 이러한 문제를 완화하려면 vcpkg에서 찾은 환경 변수에서 msys 하위 시스템(/usr/bin, bin)의 PATH 디렉터리를 유지합니다. bash에서 vcpkg의 단일 호출에 대해 다음과 같이 수정 PATH 할 수 있습니다.

PATH="${PATH/:\/usr\/bin:\/bin:/:}" ./vcpkg install libpq

또는 원하는 mingw 디렉터리(예: )만 에 추가한 후 일반 명령 프롬프트에서 vcpkg를 PATH실행할 수 있습니다. C:\msys64\mingw64\bin

Azure Pipelines, Github Actions 또는 이와 유사한 표준 이미지와 함께 CI용 vcpkg를 사용하는 경우 기본값 PATH 에는 다른 설치에서 MSYS2 프로그램의 혼합을 만드는 더 많은 디렉터리가 포함될 수 있습니다. 원하는 PATH 항목을 수동으로 설정하거나 포함하거나 포함하는 msys-2.0.dllsh.exebash.execygwin1.dll디렉터리를 제거할 수 있습니다.

Mingw-w64를 사용하여 다른 시스템에서 Windows 프로그램 빌드

비 Windows 컴퓨터의 도구 체인과 함께 vcpkg mingw 커뮤니티 트리플렛을 사용하여 Windows에서 실행할 소프트웨어를 교차 컴파일할 수 있습니다. 많은 Linux 배포판은 mingw-w64 접미사 또는 두사가 있는 선택적 패키지에서 이러한 도구 체인을 제공합니다. 예를 들어 Debian 기반 배포의 경우 x64 도구 체인에 대한 이 설치 명령으로 시작합니다.

sudo apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64

Linux 배포판의 Mingw-w64 도구 체인 패키지 버전은 몇 가지 유용한 기능이나 버그 수정이 부족한 이전 릴리스일 수 있습니다. MXE에서 대체 독립 도구 체인을 제공합니다.

vcpkg 부트스트래핑의 경우 github 리포지토리를 복제하고 스크립트를 실행합니다 bootstrap-vcpkg.sh .

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install zlib:x64-mingw-dynamic