Un gestionnaire de packages C / C ++ multiplateforme basé sur Xmake
Soutenez ce projet en devenant un sponsor. Votre logo apparaîtra ici avec un lien vers votre site Web. [Devenir sponsor]
Xrepo est un gestionnaire de package C / C ++ multiplateforme basé sur Xmake.
Il est basé sur le temps d'exécution fourni par XMake, mais il s'agit d'un programme de gestion des packages complet et indépendant. Par rapport aux gestionnaires de packages tels que VCPKG / Homebrew, XREPO peut fournir des packages C / C ++ pour plus de plateformes et d'architectures en même temps.
Et il prend également en charge la sélection sémantique multifonsion. De plus, il s'agit également d'un référentiel distribué décentralisé. Il fournit non seulement le référentiel officiel XMake-Repo, mais il prend également en charge les utilisateurs de créer plusieurs référentiels privés.
Dans le même temps, XRepo prend également en charge l'installation de packages à partir de gestionnaires de packages tiers tels que VCPKG / Homebrew / Conan, et fournit des informations de liaison de bibliothèque unifiées et cohérentes pour faciliter l'intégration et l'amarrage avec des projets tiers.
Si vous voulez en savoir plus, veuillez vous référer à: Documents, Github et Gitee

Nous avons seulement besoin d'installer XMake pour utiliser la commande xrepo. À propos de l'installation de Xmake, nous pouvons voir: Document d'installation XMake.
En plus de récupérer directement le package d'installation à partir du référentiel officiel: XMake-Repo.
Nous pouvons également ajouter un certain nombre de référentiels auto-construits, et même isoler complètement le réseau externe, et ne maintenir que l'installation et l'intégration de packages privés sur le réseau interne de l'entreprise.
Utilisez simplement la commande suivante pour ajouter votre propre adresse de référentiel:
$ xrepo add-repo myrepo https://github.com/mygroup/myrepo 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 " )Ce qui suit est l'architecture globale et le processus de compilation intégré à Xmake.
$ 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$ xrepo fetch pcre2
{
{
linkdirs = {
"/usr/local/Cellar/pcre2/10.33/lib"
},
links = {
"pcre2-8"
},
defines = {
"PCRE2_CODE_UNIT_WIDTH=8"
},
includedirs = "/usr/local/Cellar/pcre2/10.33/include"
}
} $ xrepo fetch --ldflags openssl
-L/Users/ruki/.xmake/packages/o/openssl/1.1.1/d639b7d6e3244216b403b39df5101abf/lib -lcrypto -lssl $ xrepo fetch --cflags openssl
-I/Users/ruki/.xmake/packages/o/openssl/1.1.1/d639b7d6e3244216b403b39df5101abf/include $ xrepo fetch -p [iphoneos | android] --cflags " zlib 1.2.x "
-I/Users/ruki/.xmake/packages/z/zlib/1.2.11/df72d410e7e14391b1a4375d868a240c/include $ xrepo fetch --cflags --ldflags conan::zlib/1.2.11
-I/Users/ruki/.conan/data/zlib/1.2.11/_/_/package/f74366f76f700cc6e991285892ad7a23c30e6d47/include -L/Users/ruki/.conan/data/zlib/1.2.11/_/_/package/f74366f76f700cc6e991285892ad7a23c30e6d47/lib -lzXRepo peut rapidement exporter les packages installés, y compris les fichiers de bibliothèque correspondants, les fichiers d'en-tête, etc.
$ xrepo export -o /tmp/output zlibVous pouvez également importer le package d'installation précédemment exporté sur d'autres machines pour implémenter la migration des packages.
$ xrepo import -i /xxx/packagedir zlib$ xrepo search zlib " pcr* "
zlib:
-> zlib: A Massively Spiffy Yet Delicately Unobtrusive Compression Library (in xmake-repo)
pcr*:
-> pcre2: A Perl Compatible Regular Expressions Library (in xmake-repo)
-> pcre: A Perl Compatible Regular Expressions Library (in xmake-repo)De plus, vous pouvez désormais rechercher leurs packages auprès de gestionnaires de packages tiers tels que VCPKG, Conan, Conda et APT. Vous n'avez qu'à ajouter l'espace de noms de package correspondant, par exemple:
$ xrepo search vcpkg::pcre
The package names:
vcpkg::pcre:
-> vcpkg::pcre-8.44#8: Perl Compatible Regular Expressions
-> vcpkg::pcre2-10.35#2: PCRE2 is a re-working of the original Perl Compatible Regular Expressions library $ xrepo search conan::openssl
The package names:
conan::openssl:
-> conan::openssl/1.1.1g:
-> conan::openssl/1.1.1h:$ xrepo env --show luajit
{
OLDPWD = "/mnt/tbox",
HOME = "/home/ruki",
PATH = "/home/ruki/.xmake/packages/l/luajit/2.1.0-beta3/fbac76d823b844f0b91abf3df0a3bc61/bin:/tmp:/tmp/arm-linux-musleabi-cross/bin:~/.local/bin: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
TERM = "xterm",
PWD = "/mnt/xmake",
XMAKE_PROGRAM_DIR = "/mnt/xmake/xmake",
HOSTNAME = "e6edd61ff1ab",
LD_LIBRARY_PATH = "/home/ruki/.xmake/packages/l/luajit/2.1.0-beta3/fbac76d823b844f0b91abf3df0a3bc61/lib",
SHLVL = "1",
_ = "/mnt/xmake/scripts/xrepo.sh"
}$ xrepo env luajit
LuaJIT 2.1.0-beta3 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/
JIT: ON SSE2 SSE3 SSE4.1 BMI2 fold cse dce fwd dse narrow loop abc sink fuse
>$ xrepo env -b " luajit 2.x " luajit
$ xrepo env -p iphoneos -b " zlib,libpng,luajit 2.x " cmake ..Nous pouvons personnaliser certaines configurations de packages en ajoutant le fichier xmake.lua dans le répertoire actuel, puis entrez l'environnement virtuel de package spécifique.
add_requires ( " zlib 1.2.11 " )
add_requires ( " python 3.x " , " luajit " )$ xrepo env shell
> python --version
> luajit --versionNous pouvons également configurer et charger l'environnement de chaîne d'outils correspondant dans xmake.lua, par exemple, charger l'environnement de compilation VS.
set_toolchains ( " msvc " )Nous pouvons utiliser la commande suivante pour enregistrer la configuration de l'environnement virtuel spécifié globalement au système pour une commutation rapide.
$ xrepo env --add /tmp/base.luaPour le moment, nous avons enregistré un environnement virtuel global appelé Base, et nous pouvons le voir via la commande List.
$ xrepo env --list
/Users/ruki/.xmake/envs:
-base
envs(1) found!Nous pouvons également le supprimer.
$ xrepo env --remove base Si nous enregistrons plusieurs environnements virtuels, nous pouvons également les changer rapidement.
$ xrepo env -b base shell
> python --versionOu charger directement l'environnement virtuel spécifié pour exécuter des commandes spécifiques
$ xrepo env -b base python --version xrepo env -b/--bind est de lier l'environnement virtuel spécifié. Pour plus de détails, voir: # 1762
$ xrepo info zlib
The package info of project:
require(zlib):
-> description: A Massively Spiffy Yet Delicately Unobtrusive Compression Library
-> version: 1.2.11
-> urls:
-> http://zlib.net/zlib-1.2.11.tar.gz
-> c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
-> https://downloads.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz
-> c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
-> repo: xmake-repo https://gitee.com/tboox/xmake-repo.git master
-> cachedir: /Users/ruki/.xmake/cache/packages/2010/z/zlib/1.2.11
-> installdir: /Users/ruki/.xmake/packages/z/zlib/1.2.11/d639b7d6e3244216b403b39df5101abf
-> searchdirs:
-> searchnames: zlib-1.2.11.tar.gz
-> fetchinfo: 1.2.11, system
-> version: 1.2.11
-> links: z
-> linkdirs: /usr/local/Cellar/zlib/1.2.11/lib
-> includedirs: /usr/local/Cellar/zlib/1.2.11/include
-> platforms: iphoneos, mingw@windows, macosx, mingw@linux,macosx, android@linux,macosx, windows, linux
-> requires:
-> plat: macosx
-> arch: x86_64
-> configs:
-> debug: false
-> vs_runtime: MT
-> shared: false
-> configs:
-> configs (builtin):
-> debug: Enable debug symbols. (default: false)
-> shared: Enable shared library. (default: false)
-> cflags: Set the C compiler flags.
-> cxflags: Set the C/C++ compiler flags.
-> cxxflags: Set the C++ compiler flags.
-> asflags: Set the assembler flags.
-> vs_runtime: Set vs compiler runtime. (default: MT)
-> values: {"MT","MD"}Nous pouvons utiliser la commande suivante pour désinstaller et supprimer les packages installés, la correspondance du modèle de support:
$ xrepo remove --all
$ xrepo remove --all zlib pcr *