article4 - webispy/aln GitHub Wiki
Windows์ vcpkg custom registry๋ฅผ ํตํด ๋ฐฐํฌํ๊ธฐ
Windows ํ๊ฒฝ์์ C/C++ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ๋ ์ข ์ข ๊ฐ๋ฐ์๋ค์๊ฒ ๊ณจ์น ์ํ ๋ฌธ์ ๊ฐ ๋๊ณค ํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Microsoft์์ ๊ฐ๋ฐํ vcpkg๋ Windows, Linux, macOS์์ C/C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ๋, ๋น๋ ๋ฐ ์ค์นํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฐ๋ ฅํ ํจํค์ง ๊ด๋ฆฌ์๋ก ์๋ฆฌ ์ก์์ต๋๋ค.
vcpkg์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ง์ผ๋ก๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ ๊ณ ๋ฏผ์ ํด๊ฒฐํด์ฃผ์์ง๋ง, ๋๋ก๋ ๊ณต์ ํฌํธ์ ํฌํจ๋์ง ์์ ์ฌ์ฉ์ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํน์ ๋ฒ์ ์ ํจํค์ง๋ฅผ ๊ด๋ฆฌํด์ผ ํ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ด ๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ๋ฐ๋ก vcpkg custom registry์ ๋๋ค.
์ด๋ฒ ๊ธ์์๋ ์ด์ ์ ์๊ฐํ๋ ALN(Amazing Lucky Numbers) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ๋ก ์ฌ์ฉํ์ฌ, vcpkg custom registry๋ฅผ ํตํด ํจํค์ง๋ฅผ ๋ง๋ค๊ณ ๋ฐฐํฌํ๋ ์ ์ฒด ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค.
vcpkg
vcpkg๋ ๋ง์ดํฌ๋ก์ํํธ์์ ๊ฐ๋ฐํ C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจํค์ง ๋งค๋์ ๋ก, ๋ค์ํ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๊ฐํธํ๊ฒ ์ค์นํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ค๋๋ค. vcpkg๋ CMake์ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์์ด, CMake๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์์ ํนํ ์ ์ฉํฉ๋๋ค.
vcpkg๋ฅผ ์ด์ฉํ๋ฉด ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ก ํจํค์ง๋ฅผ ์ค์นํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
vcpkg install <package-name> : ํจํค์ง ์ค์น
vcpkg remove <package-name> : ํจํค์ง ์ ๊ฑฐ
vcpkg list : ์ค์น๋ ์ ์ฒด ํจํค์ง ๋ชฉ๋ก ํ์ธ
vcpkg search <package-name> : ํจํค์ง ๊ฒ์
vcpkg update : ํจํค์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ์
๋ฐ์ดํธ
vcpkg upgrade : ์ค์น๋ ํจํค์ง ์
๊ทธ๋ ์ด๋
vcpkg integrate install : vcpkg๋ฅผ ํ์ฌ ์ฌ์ฉ์ ํ๊ฒฝ์ ํตํฉ
vcpkg integrate remove : vcpkg ํตํฉ ์ ๊ฑฐ
vcpkg export <package-name> : ํจํค์ง๋ฅผ ๋ค๋ฅธ ํ๊ฒฝ์ผ๋ก ๋ด๋ณด๋ด๊ธฐ
vcpkg๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ Windows์ Git๊ณผ Visual Studio BuildTools๊ฐ ํ์ํฉ๋๋ค. ์๋ ๋ช ๋ น์ด๋ก ์ด๋ฅผ ์ค์นํ ์ ์์ต๋๋ค
winget install -e --id Git.Git
winget install -e --id=Microsoft.VisualStudio.2022.BuildTools
์ดํ Visual Studio Installer๋ฅผ ํตํด MSVC C++ ๋น๋ ๋๊ตฌ์ ๊ฐ์ ์ปดํ์ผ๋ฌ๋ฅผ ์ถ๊ฐ๋ก ์ค์นํด์ผ ํฉ๋๋ค. ์ค๋น๊ฐ ๋๋ฌ์ผ๋ฉด, ์ด์ Git์ ํตํด vcpkg๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค.
git clone https://github.com/microsoft/vcpkg.git
๊ธฐ๋ณธ ์ค์ ๊ณผ์ ์ธ bootstrap-vcpkg.sh
์คํฌ๋ฆฝํธ๋ฅผ ์คํํด์ผ vcpkg.exe
์คํ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
cd vcpkg
bootstrap-vcpkg.bat
์ด์ vcpkg
๋ช
๋ น์ ์ด์ฉํ ์ ์์ต๋๋ค.
๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
vcpkg
๋ Homebrew์ ์ ์ฌํ๊ฒ Git ์ ์ฅ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ด ์๊ณ , vcpkg
๋ฅผ ํตํด ์ค์น๋๋ ํจํค์ง๋ค์ ๋ชจ๋ ํ์ ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. ์ธ๋ถ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ์ ์๋์ ๊ฐ์ต๋๋ค.
vcpkg/
โโโ downloads/ : ํจํค์ง ์์ค ์ฝ๋ ๋ฐ ๊ด๋ จ ํ์ผ ๋ค์ด๋ก๋ ์ ์ฅ์
โโโ installed/ : ์ค์น๋ ํจํค์ง ์ ์ฅ์
โ โโโ x64-windows/ : Windows 64๋นํธ์ฉ ์ค์น ํ์ผ
โ โโโ bin/ : DLL ํ์ผ
โ โโโ include/ : ํค๋ ํ์ผ
โ โโโ lib/ : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ
โ โโโ debug/ : ๋๋ฒ๊ทธ ๋ฒ์ ์ผ๋ก ๋น๋๋ DLL ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ
โ โโโ tools/ : ์คํ ํ์ผ ๋ฐ ๊ด๋ จ ๋๊ตฌ
โโโ packages/ : ๋น๋๋ ํจํค์ง์ ์์ ์ ์ฅ์
โโโ buildtrees/ : ํจํค์ง ๋น๋ ์ค๊ฐ ํ์ผ ๋ฐ ๋ก๊ทธ ์ ์ฅ์
โโโ scripts/ : vcpkg ๋์์ ํ์ํ ์คํฌ๋ฆฝํธ ํ์ผ
โโโ ports/ : ๊ฐ ํจํค์ง์ ํฌํธ ํ์ผ (๋น๋ ๋ฐ ์ค์น ๋ฐฉ๋ฒ ์ ์)
glib ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ์ค์ผ๋ก ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
์ผ๋จ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค:
./vcpkg install glib
์์กด์ฑ์ผ๋ก ๊ฐ์ด ์ค์น๋๋ ๋ค๋ฅธ ํจํค์ง๋ค์ ์ ์ธํ๊ณ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
vcpkg
โโโ buildtrees
โ โโโ glib
โ โโโ src : ๋ค์ด๋ก๋๋ ์์ค ํ์ผ์ ์์ถ ํด์ ๋ ๋๋ ํ ๋ฆฌ
โ โโโ x64-windows-dbg : Debug์ฉ ๋น๋ ๋๋ ํ ๋ฆฌ
โ โโโ x64-windows-rel : Release์ฉ ๋น๋ ๋๋ ํ ๋ฆฌ
โ โโโ *.log : ๋น๋ ๋ก๊ทธ ํ์ผ
โโโ downloads
โ โโโ glib-2.78.4.tar.xz : ์์ค ์์ถ ํ์ผ
โโโ installed
โ โโโ x64-windows
โ โโโ bin : *.dll, *.pdb
โ โโโ debug
โ โ โโโ bin : Debug์ฉ์ผ๋ก ๋น๋๋ *.dll, *.pdb
โ โ โโโ lib : Debug์ฉ์ผ๋ก ๋น๋๋ *.lib
โ โ โโโ pkgconfig : *.pc
โ โโโ include : *.h
โ โโโ lib : *.lib
โ โ โโโ pkgconfig : *.pc
โ โโโ share
โ โ โโโ glib : copyright ๋ฑ
โ โโโ tools
โ โโโ glib : ๊ฐ์ข
ํด(gdbus.exe, ...) ๋ฐ *.dll
โโโ packages
โโโ glib_x64-windows
โโโ {bin, debug, ...} : installed์ ์ค์นํ ํ์ผ๋ค
glib ํฌํธ ํ์ผ์ ์ ์๋ ๋ด์ฉ์ ๋ฐ๋ผ ์์ค ์์ถํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ downloads
๋๋ ํ ๋ฆฌ์ ์ ์ฅํ๊ณ , buildtrees/glib/src
๋๋ ํ ๋ฆฌ์ ์์ถ์ ํ๋๋ค. ์ดํ buildtrees/glib/x64-windows-dbg
๋๋ ํ ๋ฆฌ์์ Debug์ฉ์ผ๋ก ๋น๋๋ฅผ ์งํํ๊ณ , buildtrees/glib/x64-windows-rel
๋๋ ํ ๋ฆฌ์์ Release์ฉ์ผ๋ก ๋น๋๋ฅผ ์งํํฉ๋๋ค.
๋น๋๊ฐ ์๋ฃ๋๋ฉด packages/glib_x64-windows
๋๋ ํ ๋ฆฌ์ ์์๋ก ์ค์น๋๋ฉฐ, ์ต์ข
์ ์ผ๋ก ํตํฉ ๋๋ ํ ๋ฆฌ์ธ installed/x64-windows
๋๋ ํ ๋ฆฌ์ ๋ณต์ฌ๋ฉ๋๋ค.
vcpkg ํน์ง
vcpkg๋ ๋ค๋ฅธ ํจํค์ง ํด๊ณผ ๋น๊ตํ์ ๋ ๋ช ๊ฐ์ง ๋ ํนํ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ค์์ vcpkg์ ์ฃผ์ ํน์ง๋ค์ ๋๋ค:
- ์์ค ๊ธฐ๋ฐ ๋น๋๋ฅผ ํตํ ํจํค์ง ์ค์น: vcpkg๋ ํจํค์ง๋ฅผ ์์ค ์ฝ๋์์ ๋น๋ํ์ฌ ์ค์นํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ์ ํ๊ฒฝ์ ๋ง๊ฒ ์ต์ ํํ ์ ์๋๋ก ํด์ค๋๋ค. ํ์ฌ๊น์ง ๋ฐ์ด๋๋ฆฌ ํจํค์ง ๋ฐฐํฌ๋ฅผ ์ํ ๊ธฐ๋ณธ ์๋ฒ๋ ์ ๊ณต๋์ง ์๊ณ ์์ต๋๋ค.
- ๋๋ฒ๊ทธ ๋ฐ ๋ฆด๋ฆฌ์ฆ ๋ฐ์ด๋๋ฆฌ ๋์ ์ค์น: vcpkg๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋๋ฒ๊ทธ์ ๋ฆด๋ฆฌ์ฆ ๋ชจ๋๋ก ๊ฐ๊ฐ ๋น๋ํ์ฌ ๋ ๊ฐ์ง ๋ฒ์ ์ ๋ชจ๋ ์ค์นํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋๋ฒ๊น ๊ณผ ์ต์ ํ๋ ๋ฆด๋ฆฌ์ฆ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฝ๊ฒ ์ ํํ๋ฉฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- CMake์์ ๊ธด๋ฐํ ํตํฉ: vcpkg๋ ๊ธฐ๋ณธ์ ์ผ๋ก CMake ์์คํ
๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์ด ์์ต๋๋ค. ๋ฌผ๋ก Autotools, Meson ๊ฐ์ ๋ค๋ฅธ ๋น๋ ์์คํ
์ ์ง์ํ์ง๋ง, ์ด๋ฌํ ๊ฒฝ์ฐ์๋
portfile.cmake
ํ์ผ ๋ด์์ ํด๋น ๋น๋ ์์คํ ์ ์ํ ํฌํผ ํจ์๋ค์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. - ํด๋์(Classic) ๋ชจ๋์ ๋งค๋ํ์คํธ(Manifest) ๋ชจ๋ ์ง์: ํด๋์ ๋ชจ๋๋ ๋ค๋ฅธ ํจํค์ง ๋งค๋์ ๋ค๊ณผ ์ ์ฌํ๊ฒ ์ ์ญ์ ์ผ๋ก ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ฌ๋ฌ ํ๋ก์ ํธ๊ฐ ๊ณต์ ํ ์ ์๋ ๊ฐ๋จํ ๋ฐฉ์์ด๊ณ , ๋งค๋ํ์คํธ ๋ชจ๋๋ ํ๋ก์ ํธ๋ณ๋ก ๋ ๋ฆฝ์ ์ธ ํจํค์ง ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ๊ฐ ํ๋ก์ ํธ์ ์์กด์ฑ์ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ ๋ฐฉ์์ ๋๋ค.
ํจํค์ง ๋ง๋ค๊ธฐ
vcpkg๋ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ํฌํธ(ports)๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ๋๋ฐ, ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ ํ์ผ ๋ฐ ์คํฌ๋ฆฝํธ์ ์งํฉ์ ๋๋ค.
ํฌํธ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํ์ผ๋ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
vcpkg.json
: ํฌํธ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ JSON ํ์ผ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ฒ์ ์ ๋ณด, ์์กด์ฑ, ๋ผ์ด์ผ์ค ์ ๋ณด ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.portfile.cmake
: ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๋ํ๊ณ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ CMake ์คํฌ๋ฆฝํธ์ ๋๋ค.- ํจ์น ํ์ผ: ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด vcpkg๋ฅผ ์ํด ํ์ํ ์์ ์ฌํญ์ด ์์ ๊ฒฝ์ฐ, ์ด๋ฅผ ํฌํจํฉ๋๋ค.
vcpkg/ports
๋๋ ํ ๋ฆฌ์์ ๋ค์ํ ํจํค์ง์ ํฌํธ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, glib ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํธ๋ ๋ค์๊ณผ ๊ฐ์ ํ์ผ๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค:
vcpkg/ports/glib/
โโโ portfile.cmake : glib ๋น๋ ๋ฐ ์ค์น ๋ฐฉ๋ฒ์ ๋ํ ์ ์
โโโ vcpkg.json : glib ๋ฒ์ , ์์กด์ฑ, ๋ผ์ด์ผ์ค ์ ๋ณด
โโโ libintl.patch : ํจ์น ํ์ผ
โโโ use-libiconv-on-windows.patch : ํจ์น ํ์ผ
vcpkg.json
์์์ ์ค๋ช
ํ ๊ฒ์ฒ๋ผ vcpkg.json
ํ์ผ์ vcpkg์์ ์ฌ์ฉํ๋ ํฌํธ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ JSON ํ์ผ๋ก, ์ด ํ์ผ์๋ ํจํค์ง์ ๋ฒ์ ์ ๋ณด, ์์กด์ฑ, ๋ผ์ด์ผ์ค ์ ๋ณด ๋ฑ๊ณผ ๊ฐ์ ์ค์ํ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ํ, ํจํค์ง๊ฐ ์ ๊ณตํ๋ ์ ํ์ ๊ธฐ๋ฅ(Features)์ ๋ํ ์ ๋ณด๋ ์ ์ํ ์ ์์ต๋๋ค.
vcpkg.json์ ์ฃผ์ ํญ๋ชฉ:
- name: ํจํค์ง์ ์ด๋ฆ์ ์ ์ํฉ๋๋ค.
- version: ํจํค์ง์ ๋ฒ์ ์ ์ ์ํฉ๋๋ค.
- port-version: ํจํค์ง์ ํฌํธ ๋ฒ์ ์ ์ ์ํฉ๋๋ค. ์ด๋ ๋์ผํ ์์ค ๋ฒ์ ์์ ํฌํธ๊ฐ ์ ๋ฐ์ดํธ๋ ๊ฒฝ์ฐ ์ฆ๊ฐ์ํต๋๋ค.
- description: ํจํค์ง์ ๋ํ ์ค๋ช ์ ์ ๊ณตํฉ๋๋ค.
- homepage: ํจํค์ง์ ํํ์ด์ง URL์ ์ ์ํฉ๋๋ค.
- license: ํจํค์ง์ ๋ผ์ด์ผ์ค๋ฅผ ๋ช ์ํฉ๋๋ค.
- supports: ํจํค์ง๊ฐ ์ง์ํ๋ ํ๋ซํผ ๋ฐ ๋น๋ ํ๊ฒฝ์ ๋ช ์ํฉ๋๋ค.
- dependencies: ํจํค์ง๊ฐ ์์กดํ๋ ๋ค๋ฅธ ํจํค์ง๋ค์ ์ ์ํฉ๋๋ค.
- features: ํจํค์ง๊ฐ ์ ๊ณตํ๋ ์ ํ์ ๊ธฐ๋ฅ๋ค์ ์ ์ํฉ๋๋ค.
glib ํฌํธ์ ๋ํ vcpkg.json
ํ์ผ์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
{
"name": "glib",
"version": "2.78.4",
"port-version": 3,
"description": "Portable, general-purpose utility library.",
"homepage": "https://developer.gnome.org/glib/",
"license": "LGPL-2.1-or-later",
"supports": "!uwp & !xbox",
"dependencies": [
"dirent",
"gettext",
"libffi",
"libiconv",
"pcre2",
{
"name": "vcpkg-tool-meson",
"host": true
},
"zlib"
],
"features": {
"libmount": {
"description": "Build with libmount support.",
"supports": "linux",
"dependencies": [
"libmount"
]
},
"selinux": {
"description": "Build with selinux support.",
"supports": "linux"
}
}
}
๋๋ถ๋ถ์ ํญ๋ชฉ๋ค์ ์ฝ๊ฒ ์ดํดํ ์ ์์ผ๋ฏ๋ก, ๋ค๋ฅธ ํจํค์ง ์์คํ ์์๋ ์์ํ ์ ์๋ ๋ช ๊ฐ์ง ํญ๋ชฉ๋ค ์์ฃผ๋ก ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
"port-version": 3
: ๋ค๋ฅธ ํจํค์ง ์์คํ ์์ ์ฌ์ฉํ๋ ๋ฆฌ๋น์ (revision) ๋๋ฒ์ ๋น์ทํ ๊ฐ๋ ์ ๋๋ค. ๋์ผํ glib v2.78.4 ์์ค์ ๋ํด ํฌํธ ํจํค์ง ์์ ์ด ์ธ ๋ฒ์งธ ์ด๋ฃจ์ด์ง ๋ฒ์ ์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋ฉ๋๋ค."supports": "!uwp & !xbox"
: ํด๋น ํจํค์ง๊ฐ UWP(Universal Windows Platform)์ Xbox ํ๋ซํผ์ ์ง์ํ์ง ์์์ ์๋ฏธํฉ๋๋ค."features": { ... }
: glib ํจํค์ง๊ฐ ์ ๊ณตํ๋ ์ ํ์ ๊ธฐ๋ฅ์ ์ ์ํฉ๋๋ค. ์์ ์์์๋ "libmount"์ "selinux"๋ผ๋ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ํจํค์ง ์ค์น ์ ์๋์ ๊ฐ์ด ์ ํํ ์ ์์ต๋๋ค.vcpkg install glib
: ์ถ๊ฐ feature ์์ด ์ค์นvcpkg install glib[libmount]
: "libmount" feature๋ฅผ ํ์ฑํํ์ฌ ์ค์นvcpkg install glib[libmount,selinux]
: "libmount"์ "selinux" feature๋ฅผ ๋ชจ๋ ํ์ฑํํ์ฌ ์ค์น
portfile.cmake
portfile.cmake
ํ์ผ์ vcpkg์์ ํฌํธ(ํจํค์ง)๋ฅผ ๋น๋ํ๊ณ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ CMake ์คํฌ๋ฆฝํธ์
๋๋ค. ์ด ํ์ผ์ vcpkg๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํจํค์ง๋ฅผ ์์ค ์ฝ๋์์ ๋น๋ํ๊ณ ์ค์นํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๋ช
๋ น์ด์ ์ค์ ์ ํฌํจํฉ๋๋ค.
portfile.cmake
์ ์ฃผ์ ๋จ๊ณ:
- ์์ค ์ฝ๋ ๋ค์ด๋ก๋ ๋ฐ ์์ถ ํด์
- ๋น๋ ์ต์ ์ค์ (Feature ์ฒ๋ฆฌ)
- ๋น๋ ๋ฐ ์ค์น
- ๋๋ฒ๊ทธ ๋น๋์์ ์์ฑ๋ ๋ถํ์ํ ํ์ผ ์ ๊ฑฐ
์ ๋จ๊ณ๋ค์ CMake์ ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ๋ง์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ฌด ์ด๋ ต๊ธฐ ๋๋ฌธ์ vcpkg์์๋ ๋ค์ํ ํฌํผ ํจ์ ๋ฐ ๋ณ์๋ค์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ๊ฐ ๋จ๊ณ๋ณ๋ก ์ฌ์ฉ๋๋ ์ฃผ์ ํจ์์ ๋ณ์์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์์ค ์ฝ๋ ๋ค์ด๋ก๋ ๋ฐ ์์ถ ํด์ ๋จ๊ณ์ ์ฌ์ฉ๋๋ ์ฃผ์ ํจ์๋ค:
- vcpkg_from_github: Github์์ ์์ค ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- vcpkg_from_gitlab: GitLab์์ ์์ค ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- vcpkg_download_distfile: ์์์ URL์์ ์์ค ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- vcpkg_extract_source_archive: ๋ค์ด๋ก๋ํ ์์ค ์์นด์ด๋ธ ํ์ผ์ ์ถ์ถํฉ๋๋ค.
- vcpkg_apply_patches: ์์ค ์ฝ๋์ ํจ์น๋ฅผ ์ ์ฉํฉ๋๋ค.
๋น๋ ์ต์ ์ค์ (Feature ์ฒ๋ฆฌ) ๋จ๊ณ์ ์ฌ์ฉ๋๋ ํจ์:
- vcpkg_check_features: Feature๋ฅผ ํ์ธํด์ CMake ๋ณ์๋ก ๊ฐ์ ํ ๋นํฉ๋๋ค.
๊ฐ ๋น๋ ์์คํ ๋ณ ๋น๋ ๋ฐ ์ค์น ๋จ๊ณ์ ์ฌ์ฉ๋๋ ํจ์๋ค:
- CMake
- Autotools
- Meson
- ๊ณตํต
- vcpkg_copy_pdbs: PDB ํ์ผ๋ค์ ๋ณต์ฌํฉ๋๋ค.
- vcpkg_fixup_pkgconfig: pkgconfig ํ์ผ(
.pc
)์ ๊ฒฝ๋ก ์ ๋ณด๋ฅผ ์์ ํฉ๋๋ค. - vcpkg_install_copyright: ๋ผ์ด์ผ์ค ํ์ผ์ ์ค์นํฉ๋๋ค.
- vcpkg_copy_tools: ์ง์ ํ ๋๊ตฌ ๋ฐ ๋๊ตฌ๋ฅผ ์คํํ๊ธฐ ์ํ ์ข
์์ฑ DLL์
tools
๋๋ ํ ๋ฆฌ์ ๋ณต์ฌํฉ๋๋ค.
๋๋ฒ๊ทธ ๋น๋์์ ์์ฑ๋ ๋ถํ์ํ ํ์ผ ์ ๊ฑฐ: ๋ณดํต ์๋์ ๊ฐ์ด CMake์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ธ REMOVE_RECURSE
๋ฅผ ์ด์ฉํด ์๋์ผ๋ก ์ ๊ฑฐํฉ๋๋ค.
file(REMOVE_RECURSE
"${CURRENT_PACKAGES_DIR}/debug/include"
"${CURRENT_PACKAGES_DIR}/debug/share"
)
์ ์ฒด ํจ์ ๋ชฉ๋ก์ vcpkg ์ค๋ช ์ ํํ์ด์ง์ ์ผ์ชฝ ๋ชฉ๋ก์์ ์ฐธ์กฐ -> ํฌํธ ํ์ผ ํจ์๋ฅผ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
์ด์ glib ํฌํธ์ ๋ํ portfile.cmake
ํ์ผ์ ํตํด ์์์ ์ค๋ช
ํ ๋ด์ฉ๋ค์ด ์ ์ฉ๋์ด ์๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
string(REGEX MATCH "^([0-9]*[.][0-9]*)" GLIB_MAJOR_MINOR "${VERSION}")
vcpkg_download_distfile(GLIB_ARCHIVE
URLS "https://download.gnome.org/sources/glib/${GLIB_MAJOR_MINOR}/glib-${VERSION}.tar.xz"
FILENAME "glib-${VERSION}.tar.xz"
SHA512 6f3a06e10e7373a2dbf0688512de4126472fb73cbec488b7983b5ffecff09c64d7e1ca462f892e8f215d3d277d103ca802bad7ef0bd0f91edf26fc6ce67187b6
)
vcpkg_extract_source_archive(SOURCE_PATH
ARCHIVE "${GLIB_ARCHIVE}"
PATCHES
use-libiconv-on-windows.patch
libintl.patch
)
# ... ์ค๋ต ...
vcpkg_configure_meson(
SOURCE_PATH "${SOURCE_PATH}"
LANGUAGES C CXX OBJC OBJCXX
ADDITIONAL_BINARIES
${ADDITIONAL_BINARIES}
OPTIONS
${OPTIONS}
-Dgtk_doc=false
-Dinstalled_tests=false
-Dlibelf=disabled
-Dman=false
-Dtests=false
-Dxattr=false
)
vcpkg_install_meson(ADD_BIN_TO_PATH)
vcpkg_copy_pdbs()
# ... ์ค๋ต ...
set(GLIB_TOOLS
gapplication
gdbus
gio
gio-querymodules
glib-compile-resources
glib-compile-schemas
gobject-query
gresource
gsettings
gtester
)
# ... ์ค๋ต ...
vcpkg_copy_tools(TOOL_NAMES ${GLIB_TOOLS} AUTO_CLEAN)
vcpkg_fixup_pkgconfig()
# ... ์ค๋ต ...
file(REMOVE_RECURSE
"${CURRENT_PACKAGES_DIR}/debug/include"
"${CURRENT_PACKAGES_DIR}/debug/share"
"${CURRENT_PACKAGES_DIR}/share/gdb"
"${CURRENT_PACKAGES_DIR}/debug/lib/gio"
"${CURRENT_PACKAGES_DIR}/lib/gio"
)
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSES/LGPL-2.1-or-later.txt")
ํ์ผ์ด ๋๋ฌด ๊ธธ์ด์ ์ผ๋ถ ์ค์ํ์ง ์์ ํญ๋ชฉ๋ค์ ์๋ตํ์๋๋ฐ, ์์์ ์ค๋ช ๋๋ฆฐ ์ฃผ์ ๋จ๊ณ์ ๋ง๊ฒ CMake ์คํฌ๋ฆฝ๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
ํฌํธ ์์ฑ
์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ALN ๊ธฐ์ค์ผ๋ก ์ค์ ๋ก ํฌํธ๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ์์
ํ ๋๋ ํ ๋ฆฌ๋ฅผ vcpkg/ports
ํ์์ ์ถ๊ฐํฉ๋๋ค.
mkdir ports/aln
ports/aln/vcpkg.json
ํ์ผ์ ์์ฑํฉ๋๋ค. ALN ์์ฒด๊ฐ ๊ฐ๋จํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฆ, ๋ฒ์ ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์ ๋ณด์ ์์กด์ฑ ์ ๋ณด๋ง ์ถ๊ฐํฉ๋๋ค.
{
"name": "aln",
"version": "0.1.0",
"description": "Amazing Lucky Numbers",
"homepage": "https://github.com/webispy/aln",
"license": "Apache-2.0",
"dependencies": [
"glib",
"pkgconf",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}
์ด์ ๋น๋๋ฅผ ์ํ ports/aln/portfile.cmake
ํ์ผ์ ์์ฑํฉ๋๋ค. ALN์ ๊ฒฝ์ฐ ๋ด๋ถ์ ์ผ๋ก CMake ๊ธฐ๋ฐ์ ๋น๋ ์์คํ
์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์, vcpkg์์ ์ ๊ณตํ๋ vcpkg_cmake_*
๊ณ์ด์ ํฌํผ ํจ์๋ค์ ์ฌ์ฉํ์ต๋๋ค.
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO webispy/aln
REF v0.1.0
SHA512 5727316847c18ac42c7a683f0b6d3ec5d97bdc372c2732d259206589684d95b4108ec956eab29470dc567d96af650758f0805ae790a5b50b20c27344728db6dd
HEAD_REF master
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_fixup_pkgconfig()
vcpkg_copy_tools(TOOL_NAMES aln AUTO_CLEAN)
# Clean
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
์ด๋ ๊ฒ ํด์ ํฌํธ ํ์ผ ์์ฑ์ ์๋ฃํ์ต๋๋ค. ์ ์์ ์ผ๋ก ๋น๋๊ฐ ๋๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค. (์์กด์ฑ ํจํค์ง๊ฐ ์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ ์๋์ ๋ค๋ฅด๊ฒ ๋ ๋ง์ ํจํค์ง ์ค์น ๊ณผ์ ์ด ์งํ๋ ์ ์์ต๋๋ค.)
C:\workspace\vcpkg> ./vcpkg install aln
Computing installation plan...
The following packages will be built and installed:
aln:[email protected]
Detecting compiler hash for triplet x64-windows...
Compiler found: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/cl.exe
Restored 0 package(s) from C:\Users\work\AppData\Local\vcpkg\archives in 86.9 us. Use --debug to see more details.
Installing 1/1 aln:[email protected]...
Building aln:[email protected]...
-- Downloading https://github.com/webispy/aln/archive/v0.1.0.tar.gz -> webispy-aln-v0.1.0.tar.gz...
-- Extracting source C:/workspace/vcpkg/downloads/webispy-aln-v0.1.0.tar.gz
-- Using source at C:/workspace/vcpkg/buildtrees/aln/src/v0.1.0-0e2680e997.clean
-- Found external ninja('1.11.0').
-- Configuring x64-windows
-- Building x64-windows-dbg
-- Building x64-windows-rel
-- Fixing pkgconfig file: C:/workspace/vcpkg/packages/aln_x64-windows/lib/pkgconfig/aln.pc
-- Using cached msys2-mingw-w64-clang-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst.
-- Using cached msys2-msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst.
-- Using msys root at C:/workspace/vcpkg/downloads/tools/msys2/8fb75a18dbf79dc6
-- Fixing pkgconfig file: C:/workspace/vcpkg/packages/aln_x64-windows/debug/lib/pkgconfig/aln.pc
-- Installing: C:/workspace/vcpkg/packages/aln_x64-windows/share/aln/copyright
-- Performing post-build validation
Stored binaries in 1 destinations in 275 ms.
Elapsed time to handle aln:x64-windows: 11 s
aln:x64-windows package ABI: 201b058fcb0b7c098975c32e39c5c6239c89fd4af9edc1c422d1f902bd652855
Total install time: 11 s
aln provides pkg-config modules:
# Library for Amazing Lucky Number generation
aln
๋น๋๊ฐ ์ ์์ ์ผ๋ก ์งํ๋์์ต๋๋ค. ์์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค๋ฅธ ํ๋ซํผ๊ณผ ๋ค๋ฅด๊ฒ ์คํ ํ์ผ์ด bin
์ด ์๋๋ผ tools
์ ์ค์น๋๊ธฐ ๋๋ฌธ์ ํด๋น ๋๋ ํ ๋ฆฌ๋ก ๋จผ์ ์ด๋ํฉ๋๋ค.
C:\workspace\vcpkg> cd .\installed\x64-windows\tools\aln\
ls
๋ช
๋ น์ผ๋ก ์ค์น๋ ํ์ผ ๋ชฉ๋ก์ ํ์ธํด ๋ณด๋ฉด, ์์ ํ๋ก๊ทธ๋จ์ธ aln.exe
์ ์คํ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
C:\workspace\vcpkg\installed\x64-windows\tools\aln> ls
๋๋ ํฐ๋ฆฌ: C:\workspace\vcpkg\installed\x64-windows\tools\aln
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024-07-18 ์คํ 3:47 11264 aln.dll
-a---- 2024-07-18 ์คํ 3:47 11776 aln.exe
-a---- 2024-07-18 ์คํ 3:47 413696 aln.pdb
-a---- 2024-07-17 ์คํ 5:43 1195008 glib-2.0-0.dll
-a---- 2024-07-17 ์คํ 5:26 1077248 iconv-2.dll
-a---- 2024-07-17 ์คํ 5:35 96768 intl-8.dll
-a---- 2024-07-17 ์คํ 5:41 522240 pcre2-8.dll
๋ํ, ์์ ํ๋ก๊ทธ๋จ๋ ์ ์์ ์ผ๋ก ์คํ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
C:\workspace\vcpkg\installed\x64-windows\tools\aln> .\aln.exe
03 14 26 09 25 10
08 02 21 04 44 29
42 25 26 34 29 36
24 09 05 30 23 46
07 18 06 37 38 05
์ด๋ ๊ฒ ํด์ vcpkg์ฉ ํฌํธ๋ฅผ ์์ฑํด ๋ณด์์ต๋๋ค. ๋ง์ฝ ๋ฐฐํฌํ๋ ค๋ ํจํค์ง๊ฐ ๊ณต์์ ์ด๊ณ ๋ค์ํ ๊ณณ์์ ์ฌ์ฉ๋๋ค๋ฉด, ์์ฑํ ํฌํธ๋ฅผ vcpkg์ Pull request๋ก ์ ์ถํด๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
ALN๊ณผ ๊ฐ์ด ์์ ๋ก ์์ฑํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์ ๋ ๊ณณ์์๋ง ์ฌ์ฉ๋ ๋ชฉ์ ์ผ๋ก ๋ง๋ ๊ฒฝ์ฐ, ๊ณต์ ์ ์ฅ์ ๋์ Custom registry๋ฅผ ํตํด ํฌํธ๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
Custom registry
vcpkg์ Custom Registry ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์์ ์ ํฌํธ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ณต์ vcpkg ๋ ํฌ์งํ ๋ฆฌ ์ธ๋ถ์์ ํจํค์ง๋ฅผ ๋ฐฐํฌํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Registry ์์ฑ
๋จผ์ Registry๋ก ์ฌ์ฉํ ๋๋ ํ ๋ฆฌ(aln-vcpkg-registry
)๋ฅผ ์์ฑํฉ๋๋ค. ์ฐจํ์ vcpkg ๋ช
๋ น์ผ๋ก ์ฝ๊ฒ ์ ๊ทผํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด vcpkg ๋๋ ํ ๋ฆฌ์ ๊ฐ์ ๋ ๋ฒจ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
workspace
โโโ vcpkg : vcpkg๊ฐ ์ค์น๋ ๋๋ ํ ๋ฆฌ
โโโ aln-vcpkg-registry : Custom registry๋ก ์์ฑํ ๋๋ ํ ๋ฆฌ
์๋์ ๊ฐ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ ํ Git ์ ์ฅ์๋ก ๋ง๋ญ๋๋ค.
C:\workspace> mkdir aln-vcpkg-registry
C:\workspace> cd aln-vcpkg-registry
C:\workspace\aln-vcpkg-registry> git init .
Initialized empty Git repository in C:/workspace/aln-vcpkg-registry/.git/
vcpkg์์ ์ ๊ณตํ๋ x-init-registry
๋ช
๋ น์ ์ด์ฉํด Registry๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
C:\workspace\aln-vcpkg-registry> ..\vcpkg\vcpkg.exe x-init-registry .
Successfully created registry at C:\workspace\aln-vcpkg-registry\.
์ด์ ๋จ๊ณ์์ ๋ง๋ค์๋ aln ํฌํธ๋ฅผ Custom registry๋ก ์ด๋์ํต๋๋ค.
C:\workspace> Move-Item -Path "vcpkg/ports/aln" -Destination "aln-vcpkg-registry/ports/"
๊ธฐ๋ณธ์ ์ธ ์์ ์ ์๋ฃ๋์์ต๋๋ค. ํ์ฌ๊น์ง ์์ ํ ๋ด์ฉ๋ค์ ์ปค๋ฐ์ผ๋ก ์ ์ฅํฉ๋๋ค.
C:\workspace\aln-vcpkg-registry> git add .
C:\workspace\aln-vcpkg-registry> git commit -m "Initial commit"
[master (root-commit) f3f0c27] Initial commit
3 files changed, 45 insertions(+)
create mode 100644 ports/aln/portfile.cmake
create mode 100644 ports/aln/vcpkg.json
create mode 100644 versions/baseline.json
์ด์ ์์๋ก ์์ฑํ๋ versions database(versions/baseline.json
) ํ์ผ์ ํฌํธ์ ๋ง๊ฒ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ๋คํํ vcpkg์์ ๋ช
๋ น์ ์ ๊ณตํด์ฃผ๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ์คํํ๋ฉด ์
๋ฐ์ดํธ๊ฐ ์๋ฃ๋ฉ๋๋ค.
C:\workspace\aln-vcpkg-registry> ../vcpkg/vcpkg `
--x-builtin-ports-root=./ports `
--x-builtin-registry-versions-dir=./versions `
x-add-version --all --verbose --overwrite-version
added version 0.1.0 to C:\workspace\aln-vcpkg-registry\versions\a-\aln.json (new file)
added version 0.1.0 to C:\workspace\aln-vcpkg-registry\versions\baseline.json
์์ ๋ ํญ๋ชฉ๋ค์ Git ์ปค๋ฐ์ผ๋ก ๋ฐ์ํฉ๋๋ค.
C:\workspace\aln-vcpkg-registry> git add .
C:\workspace\aln-vcpkg-registry> git commit -m "Update versions database"
์ ์ฒด ๊ฐ์ด๋๋ https://learn.microsoft.com/en-us/vcpkg/produce/publish-to-a-git-registry ๋ฌธ์๋ฅผ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
Registry๋ฅผ ์ด์ฉํ ํจํค์ง ์ค์น
์์์ ์์ฑํ Custom registry๋ฅผ ์ด์ฉํด ํจํค์ง๋ฅผ ์ค์นํด ๋ณด๊ฒ ์ต๋๋ค.
ํด๋์ ๋ชจ๋
ํด๋์ ๋ชจ๋์์๋ ๊ฐ๋จํ๊ฒ --overlay-ports
๋ฅผ ์ด์ฉํด์ ํจํค์น๋ฅผ ์ค์นํด๋ณผ ์ ์์ต๋๋ค.
./vcpkg install aln --overlay-ports=../aln-vcpkg-registry/ports
๋งค๋ํ์คํธ ๋ชจ๋
๋งค๋ํ์คํธ ๋ชจ๋ ํ
์คํธ๋ฅผ ์ํด ๋ณ๋์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ(test
)๋ฅผ ์์ฑํ ํ, vcpkg
๋ช
๋ น์ ํตํด ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋ ๋งค๋ํ์คํธ ํ์ผ(vcpkg.json) ๋ฐ ๊ธฐ๋ณธ ๊ตฌ์ฑ ํ์ผ(vcpkg-configuration.json)์ ๋ง๋ญ๋๋ค.
C:\workspace> mkdir test
C:\workspace> cd test
C:\workspace\test> ..\vcpkg\vcpkg.exe new --application
Custom registry ์ถ๊ฐ๋ฅผ ์ํด vcpkg-configuration.json
ํ์ผ์ ํธ์ง๊ธฐ๋ก ์คํํฉ๋๋ค.
C:\workspace\test> notepad vcpkg-configuration.json
registries
๋ฐฐ์ด์ Custom registry์ ๋ํ ์ ๋ณด(Github ์ฃผ์, ์ปค๋ฐ ID, ์ ๊ณตํ๋ ํจํค์ง ๋ชฉ๋ก)๋ฅผ ์ถ๊ฐํฉ๋๋ค.
{
"default-registry": {
"kind": "git",
"baseline": "1318ab14aae14db20085441cd71366891a9c9d0c",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "artifact",
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
"name": "microsoft"
},
{
"kind": "git",
"repository": "https://github.com/webispy/aln-vcpkg-registry",
"baseline": "f929043290a441ba01bdf06e122eb57e6ada4855",
"packages": [ "aln" ]
}
]
}
์ค์น๋ฅผ ํ ์คํธํ๊ธฐ ์ํด test ํ๋ก์ ํธ์ ์์กด์ฑ ์ ๋ณด์ aln์ ์ถ๊ฐํฉ๋๋ค.
C:\workspace\test> ..\vcpkg\vcpkg.exe add port aln
vcpkg.json ํ์ผ์ ์๋์ ๊ฐ์ด ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
{
"dependencies": [
"aln"
]
}
์ด์ ํจํค์ง๊ฐ ์ค์น๋๋์ง ํ ์คํธํด ๋ณด๊ฒ ์ต๋๋ค.
C:\workspace\test> ..\vcpkg\vcpkg.exe install
Fetching registry information from https://github.com/webispy/aln-vcpkg-registry (HEAD)...
Fetching registry information from https://github.com/microsoft/vcpkg (HEAD)...
# ์ค๋ต: ... ์์กด์ฑ ํจํค์ง ์ค์น ...
Installing 14/14 aln:[email protected]...
Building aln:[email protected]...
C:\Users\work\AppData\Local\vcpkg\registries\git-trees\c35212cbf7f33194a4c120e1bcce4381de128dab: info: installing overlay port from here
-- Using cached webispy-aln-v0.1.0.tar.gz.
-- Cleaning sources at C:/workspace/vcpkg/buildtrees/aln/src/v0.1.0-0e2680e997.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source C:/workspace/vcpkg/downloads/webispy-aln-v0.1.0.tar.gz
-- Using source at C:/workspace/vcpkg/buildtrees/aln/src/v0.1.0-0e2680e997.clean
-- Found external ninja('1.11.0').
-- Configuring x64-windows
-- Building x64-windows-dbg
-- Building x64-windows-rel
-- Fixing pkgconfig file: C:/workspace/vcpkg/packages/aln_x64-windows/lib/pkgconfig/aln.pc
-- Using cached msys2-mingw-w64-clang-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst.
-- Using cached msys2-msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst.
-- Using msys root at C:/workspace/vcpkg/downloads/tools/msys2/8fb75a18dbf79dc6
-- Fixing pkgconfig file: C:/workspace/vcpkg/packages/aln_x64-windows/debug/lib/pkgconfig/aln.pc
-- Installing: C:/workspace/vcpkg/packages/aln_x64-windows/share/aln/copyright
-- Performing post-build validation
Stored binaries in 1 destinations in 252 ms.
Elapsed time to handle aln:x64-windows: 10 s
aln:x64-windows package ABI: 854463babb3e57397d66c8c04e5c39f3c26f718d5be1e765066795495c56baf6
Total install time: 11 s
aln provides pkg-config modules:
# Library for Amazing Lucky Number generation
aln
ํจํค์ง๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์์ต๋๋ค.
๋ง๋ฌด๋ฆฌ
์ด๋ ๊ฒ ํด์ Windows์์ vcpkg ํฌํธ๋ฅผ ์์ฑํ๊ณ Custom registry๋ฅผ ํตํด ํจํค์ง๋ฅผ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ์ดํด๋ณด์์ต๋๋ค. ์ด๋ฒ ๊ธ์ด ์ฌ๋ฌ๋ถ์ vcpkg ํ์ฉ์ ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค.