xmake v2.3.9 lanzado, nuevo administrador de paquetes independiente Xrepo C / C ++ agregado

xmake  es una herramienta ligera de compilación multiplataforma basada en Lua. Utiliza xmake.lua para mantener las compilaciones del proyecto. En comparación con makefile / CMakeLists.txt, la sintaxis de configuración es más concisa e intuitiva. Es muy amigable para los principiantes. Puede comenzar rápidamente en poco tiempo. Permita que los usuarios se concentren más en el desarrollo real del proyecto.

En esta nueva versión, nos enfocamos en mejorar la administración de paquetes de dependencia de xmake, agregando soporte para el administrador de paquetes pacman en Archlinux y MSYS2 / Mingw, y enriquecimos aún más el repositorio oficial de paquetes de  xmake xmake-repo , agregando 50 Varios paquetes C / C ++ de uso común.

Además, hemos agregado un nuevo subcomando independiente basado en xmake: xrepo , un administrador de paquetes C / C ++ multiplataforma completo e independiente, que facilita a los usuarios la administración de la instalación y el uso integrado de los paquetes C / C ++ diarios.

Al mismo tiempo, también hemos lanzado el sitio relacionado con  xrepo xrepo.xmake.io , donde podemos verificar rápidamente el uso de xrepo, así como el soporte y uso de cada paquete en el repositorio oficial de xmake-repo.

Introducción de nuevas funciones

Administrador de paquetes Xrepo

xrepo es un  administrador de paquetes C / C ++ multiplataforma basado en  Xmake .

Se basa en el tiempo de ejecución proporcionado por xmake, pero es un programa de administración de paquetes completo e independiente. En comparación con los administradores de paquetes como vcpkg / homebrew, xrepo puede proporcionar paquetes C / C ++ para más plataformas y arquitecturas al mismo tiempo.

También es compatible con la selección semántica de múltiples versiones. Además, es un almacén distribuido descentralizado. No solo proporciona el almacén oficial de  xmake-repo  , sino que también ayuda a los usuarios a construir múltiples almacenes privados.

Al mismo tiempo, xrepo también admite la instalación de paquetes de administradores de paquetes de terceros, como vcpkg / homebrew / conan, y proporciona información de enlaces de biblioteca unificada y coherente para facilitar la integración y el acoplamiento con proyectos de terceros.

Si desea saber más, consulte: documentación en líneaGithub  y  Gitee

instalación

Solo necesitamos instalar xmake para usar el comando xrepo.Para la instalación de xmake, podemos ver: documento de instalación de xmake .

Plataforma de apoyo

  • Windows (x86, x64)
  • macOS (i386, x86_64, arm64)
  • Linux (i386, x86_64, cadenas de herramientas cruzadas ..)
  • * BSD (i386, x86_64)
  • Android (x86, x86_64, armeabi, armeabi-v7a, arm64-v8a)
  • iOS (armv7, armv7s, arm64, i386, x86_64)
  • MSYS (i386, x86_64)
  • MinGW (i386, x86_64, brazo, brazo64)
  • Cadenas de herramientas cruzadas

Almacén de gestión de paquetes compatible

Soporte de almacén distribuido

Además de  recuperar directamente el paquete de instalación del repositorio oficial: xmake-repo , también podemos agregar cualquier número de repositorios autoconstruidos, e incluso aislar completamente la red externa, y solo mantener la instalación e integración de paquetes privados en la red interna de la empresa.

Simplemente use el siguiente comando para agregar su propia dirección de almacén:

$ xrepo add-repo myrepo https://github.com/mygroup/myrepo

Instale el paquete C / C ++ de forma independiente

Hay varios métodos de instalación disponibles, que admiten la versión semántica, el paquete de depuración, la biblioteca dinámica, los parámetros configurables y la instalación del paquete C / C ++ en varios paquetes de administración de terceros.

$ xrepo install zlib tbox
$ xrepo install "zlib 1.2.x"
$ xrepo install "zlib >=1.2.0"
$ xrepo install -p iphoneos -a arm64 zlib
$ xrepo install -p android [--ndk=/xxx] zlib
$ xrepo install -p mingw [--mingw=/xxx] zlib
$ xrepo install -p cross --sdk=/xxx/arm-linux-musleabi-cross zlib
$ xrepo install -m debug zlib
$ xrepo install -k shared zlib
$ xrepo install -f "vs_runtime=MD" zlib
$ xrepo install -f "regex=true,thread=true" boost
$ xrepo install brew::zlib
$ xrepo install vcpkg::zlib
$ xrepo install conan::zlib/1.2.11
$ xrepo install pacman:libpng
$ xrepo install dub:log

Integración perfecta con xmake engineering

add_requires("tbox >1.6.1", "libuv master", "vcpkg::ffmpeg", "brew::pcre2/libpcre2-8")
add_requires("conan::openssl/1.1.1g", {alias = "openssl", optional = true, debug = true})
target("test")
    set_kind("binary")
    add_files("src/*.c")
    add_packages("tbox", "libuv", "vcpkg::ffmpeg", "brew::pcre2/libpcre2-8", "openssl")

A continuación se muestra la arquitectura general y el proceso de compilación integrados con xmake.

Para obtener más información sobre cómo utilizar xrepo, consulte el documento: Inicio rápido de Xrepo .

Admite la instalación de paquetes de dependencia compilados de forma cruzada

En la nueva versión, hemos mejorado el mecanismo de instalación del paquete de dependencia dentro de xmake y hemos agregado compatibilidad con la instalación del paquete de dependencia C / C ++ para la cadena de herramientas de compilación cruzada, por ejemplo:

add_requires("zlib", "openssl")
target("test")
    set_kind("binary")
    add_files("src/*.c")
    add_packages("zlib", "openssl")

Hemos configurado dos paquetes de dependencia arriba: zlib, openssl, y luego cambiamos al entorno de compilación cruzada y usamos la cadena de herramientas de compilación en musl.cc para compilar.

$ xmake f -p cross --sdk=/tmp/arm-linux-musleabi-cross
in xmake-repo:
  -> openssl 1.1.1h
please input: y (y/n)

  => http://zlib.net/zlib-1.2.11.tar.gz .. ok
  => download https://github.com/openssl/openssl/archive/OpenSSL_1_1_1h.zip .. ok
  => installing zlib .. ok
  => installing openssl .. ok
$ xmake
[ 50%]: ccache compiling.release src/main.cpp
[ 75%]: linking.release test
[100%]: build ok!

xmake extraerá automáticamente el paquete de código fuente zlib / openssl y luego usará la  arm-linux-musleabi-cross cadena de herramientas cruzadas para compilar e instalar zlib y openssl. Una vez completada la instalación, se integrará automáticamente en el proyecto de prueba para participar en el enlace hasta que esté completamente compilado.

Por supuesto, para que C / C ++ admita la compilación cruzada, primero debe mantener el repositorio oficial de xmake-repo y agregar soporte para la compilación cruzada. En la actualidad, no hay muchos paquetes C / C ++ que admitan crossover en el almacén, pero muchos ya se han incluido y continuarán expandiéndose en el futuro.

Si desea ver qué paquetes admiten la compilación cruzada, puede ir directamente al sitio del almacén de paquetes para ver: Lista de paquetes C / C ++ que admite compilación cruzada

También podemos usar el comando xrepo proporcionado en la nueva versión para recuperar directamente los paquetes admitidos por la plataforma especificada (admite consultas difusas):

$ xrepo search -p cross zli*

También damos la bienvenida a todos para ayudar a contribuir con más paquetes al   repositorio oficial de xmake-repo y trabajar juntos para mejorar la construcción del ecosistema de administración de paquetes C / C ++, de modo que los usuarios puedan usar varios paquetes dependientes de manera más conveniente y ya no tengan que involucrarse en varias tareas tediosas de migración. Preocupado.

Mecanismo de detección de licencia de paquete dependiente

Teniendo en cuenta que las licencias respectivas de los paquetes en el almacén son diferentes, algunos paquetes pueden entrar en conflicto con la licencia del proyecto del usuario después de su uso, por lo que xmake agrega un mecanismo de detección de compatibilidad de licencias de dependencia de paquetes en la nueva versión.

Y se ha agregado una nueva  set_license interfaz, que permite a los usuarios configurar la licencia de cada objetivo.

Por ejemplo, integramos una biblioteca libplist de paquetes LGPL-2.0, pero nuestro proyecto no tiene ninguna configuración de licencia.

add_requires("libplist") -- LGPL-2.0
target("test")
    set_kind("binary")
    add_files("src/*.cpp")
    add_packages("libplist")

Al compilar, aparecerá el siguiente mensaje para advertir a los usuarios que puede haber un riesgo de conflictos de licencia de código al usar libplist.

$ xmake
warning: target(test) maybe is not compatible with license(LGPL-2.1) of package(libplist),
we can use shared libraries with LGPL-2.1 or use set_license()/set_policy() to modify/disable license!

Y si pasamos explícitamente el proyecto para  set_license("LGPL-2.0")garantizar la compatibilidad total, no habrá mensajes de advertencia, y para  GPL las licencias relacionadas, xmake también tendrá las detecciones correspondientes.

Los paquetes de licencias relativamente flexibles, como MIT y BSD, se integran directamente y se utilizan sin previo aviso.

Además, si establecemos explícitamente  set_license() el conflicto de licencia con el paquete, también mostraremos una advertencia.

Soporte de fuente de paquete Pacman

En la versión anterior, xmake ya admite la integración automática de fuentes de paquetes de almacén de terceros, como vcpkg, conan, clib, homebrew, etc. En la nueva versión, hemos agregado soporte para la integración de paquetes administrados por pacman.

Admitimos la  instalación e integración del paquete pacman en archlinux, y la instalación e integración del paquete mingw x86_64/ en msys2  i386.

add_requires("pacman::zlib", {alias = "zlib"})
add_requires("pacman::libpng", {alias = "libpng"})

target("test")
    set_kind("binary")
    add_files("src/*.c")
    add_packages("zlib", "libpng")

En archlinux, solo:

xmake

Para instalar el paquete mingw en msys2, debe especificar la plataforma mingw:

xmake f -p mingw -a [x86_64|i386]
xmake

Instalación obligatoria de cualquier versión del paquete

Debido a que los paquetes en el almacén de xmake-repo tienen una lista de versiones estricta y el valor sha256 correspondiente para la verificación de integridad de la descarga, esto garantizará la confiabilidad e integridad de la descarga del paquete.

Sin embargo, también conduce a la imposibilidad de incluir completamente todas las versiones de un paquete. Si hay una versión requerida que no se ha incluido, una forma es que el usuario agregue el pr al repositorio xmake-repo para aumentar el soporte para la versión correspondiente.

Otra forma es configurar el {verify = false} mecanismo de verificación de omisión obligatorio en xmake.lua  para que pueda elegir descargar cualquier versión del paquete.

add_requires("libcurl 7.73.0", {verify = false})

Mejoras en la integración del paquete vcpkg

Con respecto a la integración de dependencias del paquete vcpkg, se han realizado muchas mejoras en la nueva versión. No solo se ha agregado el soporte de switch para el paquete windows-static-md, sino que también hemos mejorado el mecanismo de detección automática del comando vcpkg, haciéndolo posible en más escenarios Se puede detectar automáticamente en lugar de requerir una configuración manual.

Mejoras de cadena de herramientas cruzadas personalizadas

En la nueva versión, continuamos realizando mejoras en la cadena de herramientas personalizadas para que la detección automática sea más inteligente. Por lo general, solo es necesario especificar sdkdir, xmake puede detectar automáticamente otras configuraciones, como cruces y otra información, por ejemplo:

toolchain("my_toolchain")
    set_kind("standalone")
    set_sdkdir("/tmp/arm-linux-musleabi-cross")
toolchain_end()

target("hello")
    set_kind("binary")
    add_files("apps/hello/*.c")

Esta es una de las configuraciones de cadena de herramientas cruzadas más optimizadas, simplemente configure la ruta sdk correspondiente y luego  set_kind("standalone") márquela como una cadena de herramientas independiente completa.

En este momento, podemos --toolchain=my_toolchain cambiar manualmente a esta cadena de herramientas a través de la línea de comando  para usar.

xmake f --toolchain=my_toolchain
xmake

Además, también podemos set_toolchains vincularlo directamente al destino correspondiente en xmake.lua , luego, solo cuando este destino esté compilado, cambiaremos  a nuestra cadena de herramientas personalizada.

toolchain("my_toolchain")
    set_kind("standalone")
    set_sdkdir("/tmp/arm-linux-musleabi-cross")
toolchain_end()

target("hello")
    set_kind("binary")
    add_files("apps/hello/*.c")
    set_toolchains("my_toolchain")

De esta manera, ya no necesitamos cambiar la cadena de herramientas manualmente, simplemente ejecute xmake, y automáticamente cambiará a la cadena de herramientas my_toolchain por defecto.

Esto es especialmente útil para el desarrollo integrado, porque existen muchas cadenas de herramientas de compilación cruzada para plataformas integradas y, a menudo, necesitamos varios conmutadores para completar la compilación de diferentes plataformas.

Por lo tanto, podemos colocar todas las definiciones de la cadena de herramientas en un archivo lua separado para definir, por ejemplo:

projectdir
    - xmake.lua
    - toolchains
      - my_toolchain1.lua
      - my_toolchain2.lua
      - ...

Luego, solo necesitamos introducirlos en xmake.lua a través de inclusiones y vincular diferentes cadenas de herramientas de acuerdo con diferentes plataformas personalizadas:

includes("toolchains/*.lua")
target("hello")
    set_kind("binary")
    add_files("apps/hello/*.c")
    if is_plat("myplat1") then
        set_toolchains("my_toolchain1")
    elseif is_plat("myplat2") then
        set_toolchains("my_toolchain2")
    end

De esta manera, podemos cambiar rápidamente la plataforma designada directamente al compilar para cambiar automáticamente la cadena de herramientas correspondiente.

xmake f -p myplat1
xmake

Si la estructura de algunas cadenas de herramientas de compilación cruzada es complejo y la detección automática no es suficiente, se puede utilizar set_toolset, set_cross y set_bindir otras interfaces de acuerdo a la situación real  configurar otros ajustes de forma selectiva.

Por ejemplo, en el siguiente ejemplo, también agregamos algunos cxflags / ldflags y enlaces de biblioteca del sistema integrados.

toolchain("my_toolchain")
    set_kind("standalone")
    set_sdkdir("/tmp/arm-linux-musleabi-cross")
    on_load(function (toolchain)
        -- add flags for arch
        if toolchain:is_arch("arm") then
            toolchain:add("cxflags", "-march=armv7-a", "-msoft-float", {force = true})
            toolchain:add("ldflags", "-march=armv7-a", "-msoft-float", {force = true})
        end
        toolchain:add("ldflags", "--static", {force = true})
        toolchain:add("syslinks", "gcc", "c")
    end)

Para obtener más ejemplos de cadenas de herramientas personalizadas, puede consultar la definición de cadena de herramientas incorporada en el directorio de origen de xmake: lista de cadenas de herramientas internas

La configuración del menú admite la operación del mouse

¿Recuerda que xmake también proporciona la configuración del menú del terminal gráfico? Es la interfaz de configuración gráfica de configuración de menú clásica similar al kernel de Linux.

xmake f --menu

En la nueva versión, también le hemos hecho más mejoras, agregando operaciones de mouse multiplataforma. Podemos usar el mouse para hacer clic y seleccionar varios elementos de configuración, lo cual es más conveniente.

actualizar contenido

Nuevas características

  • Agregue un nuevo   comando xrepo para administrar e instalar paquetes C / C ++
  • Admite la instalación de paquetes de dependencia compilados de forma cruzada
  • Se agregó soporte de cadena de herramientas en musl.cc
  • # 1009 : admite ignorar la verificación para instalar cualquier versión del paquete,add_requires("libcurl 7.73.0", {verify = false})
  • # 1016 : Agregar verificación de compatibilidad de licencia para paquetes dependientes
  • # 1017 : Soporte de archivos de encabezado externos / del sistema  add_sysincludedirs, los paquetes dependientes se utilizan de forma predeterminada-isystem
  • # 1020 : Soporte para encontrar e instalar el paquete pacman en archlinux y msys2
  • Mejora la  xmake f --menu configuración del menú, admite la operación del mouse

Mejorar

  • # 997xmake project -k cmake agregar set_languages soporte para complementos 
  • # 998 : admite la instalación del paquete vcpkg tipo windows-static-md
  • # 996 : mejorar la búsqueda en el directorio vcpkg
  • # 1008 : Mejorar la cadena de herramientas de compilación cruzada
  • # 1030 : Mejore las reglas de xcode.framework y xcode.application
  • # 1051 : agregar edit y  embed depurar el tipo de formato de información al  compilador de msvc set_symbols()
  • # 1062 : Mejora el  xmake project -k vs complemento

Supongo que te gusta

Origin www.oschina.net/news/121671/xmake-2-3-9-released
Recomendado
Clasificación