Microsoft publica vcpkg para GNU/Linux y MacOS

Microsoft anunció la disponibilidad de vcpkg en GNU/Linux y MacOS. Esto da a los desarrolladores acceso inmediato al catálogo vcpkg de bibliotecas C++ en dos nuevas plataformas con los mismos pasos que se usan hoy en día en Windows y UWP.

Vcpkg ha recorrido un largo camino desde su lanzamiento en CppCon 2016. Comenzando con solo 20 bibliotecas, ha tenido un crecimiento importante en los últimos 19 meses con más de 900 bibliotecas y funciones disponibles. Todo el mérito recae en las contribuciones de la comunidad.

En el feedback recibido hasta ahora, el soporte para GNU/Linux y Mac fue la característica más solicitada por el momento. Por eso ahora vcpkg llega a una comunidad aún más amplia y facilita el acceso multiplataforma a más bibliotecas C++. Desde Microsoft invitan a probar vcpkg ya sea que tengas como objetivo usarlo con Windows, GNU/Linux o MacOS.

La herramienta vcpkg ahora es compatible con GNU/Linux, Mac y otros sistemas POSIX. Hay más de 350 bibliotecas disponibles para GNU/Linux y Mac, y esperan que ese número crezca rápidamente. Actualmente han realizado pruebas diarias en Ubuntu LTS 16.04 / 18.04 y tuvieron éxito en Arch, Fedora y FreeBSD.

Clonamos el repositorio vcpkg:

git clone https://github.com/Microsoft/vcpkg

Instalamos vcpkg:

./bootstrap-vcpkg.sh

Una vez que vcpkg está compilado e instalado, se puede construir cualquier biblioteca usando la siguiente sintaxis:

vcpkg install sdl2

Esto instalará sdl2: x64-linux (x64 static es la opción predeterminada y única disponible en GNU/Linux).

El resultado (.h, .lib) se almacena en el mismo árbol de directorios. Luego hay que hacer referencia a este directorio en la configuración de tu sistema de compilación.

Si usamos CMakecomo sistema de compilación, debemos usar CMAKE_TOOLCHAIN_FILE para hacer que las bibliotecas estén disponibles con find_package(). Ejemplo:

cmake .. “-DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake”

Es necesario hacer referencia al directorio vcpkg que contiene los headers (\vcpkg\installed\x64-linux\include) y también al que contiene los .lib(\vcpkg\installed\x64-linux\lib) para poder construir tu proyecto utilizando las bibliotecas generadas.

Por otra parte podemos usar WSL como lo haríamos con cualquier sistema GNU/Linux. Una vez configurado correctamente, podrás producir binarios de Linux desde tu máquina con Windows como si hubieran sido generados desde una equipo GNU/Linux. De esa manera habrá que seguir las mismas instrucciones que para instalar en GNU/Linux.

Como se muestra en la captura de pantalla anterior, el directorio vcpkg podría ser compartido entre Windows y WSL. En este ejemplo, sdl2 y sqlite3 se construyeron desde WSL (binarios para Linux); sqlite3 fue construido también para Windows (Windows dll).

Como en cualquier proyecto de código abierto o software libre, siempre es bueno colaborar con feedback abriendo un issue en el repositorio del proyecto (en este caso Github).