Ein plattformübergreifender C/C ++ -Paketmanager basierend auf XMake
Unterstützen Sie dieses Projekt, indem Sie Sponsor werden. Ihr Logo wird hier mit einem Link zu Ihrer Website angezeigt. [Sponsor werden]
XREPO ist ein plattformübergreifender C/C ++ -Paketmanager, der auf XMake basiert.
Es basiert auf der Laufzeit von XMake, aber es ist ein vollständiges und unabhängiges Paketmanagementprogramm. Im Vergleich zu Paketmanagern wie VCPKG/Homebrew kann XREPO gleichzeitig C/C ++ - Pakete für weitere Plattformen und Architekturen bereitstellen.
Und es unterstützt auch die multi-version-semantische Auswahl. Darüber hinaus handelt es sich auch um ein dezentrales verteiltes Repository. Es liefert nicht nur das offizielle XMake-Repo-Repository, sondern unterstützt auch Benutzer, mehrere private Repositorys zu erstellen.
Gleichzeitig unterstützt XREPO auch die Installation von Paketen von Paketmanagern von Drittanbietern wie VCPKG/Homebrew/Conan und bietet einheitliche und konsequente Bibliotheksverknüpfungsinformationen, um die Integration und Docking mit Projekten von Drittanbietern zu erleichtern.
Wenn Sie mehr wissen möchten, lesen Sie bitte: Dokumente, Github und Gitee

Wir müssen nur XMake installieren, um den Befehl xRepo zu verwenden. Über die Installation von XMake können wir: XMake -Installationsdokument sehen.
Zusätzlich zum direkten Abrufen des Installationspakets aus dem offiziellen Repository: XMake-Repo.
Wir können auch eine beliebige Anzahl von selbstgebauten Repositorys hinzufügen und das externe Netzwerk sogar vollständig isolieren und nur die Installation und Integration privater Pakete im internen Netzwerk des Unternehmens beibehalten.
Verwenden Sie einfach den folgenden Befehl, um Ihre eigene Repository -Adresse hinzuzufügen:
$ 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 " )Das Folgende ist der in XMake integrierte Gesamtarchitektur- und Kompilierungsprozess.
$ 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 kann die installierten Pakete schnell exportieren, einschließlich der entsprechenden Bibliotheksdateien, Header -Dateien usw.
$ xrepo export -o /tmp/output zlibSie können das zuvor exportierte Installationspaket auch auf andere Maschinen importieren, um die Paketmigration zu implementieren.
$ 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)Darüber hinaus können Sie nun nach ihren Paketen von Paketmanagern von Drittanbietern wie VCPKG, Conan, Conda und APT suchen. Sie müssen nur den entsprechenden Paket -Namespace hinzufügen, zum Beispiel:
$ 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 ..Wir können einige Paketkonfigurationen anpassen, indem wir die Datei xMake.lua im aktuellen Verzeichnis hinzufügen und dann die spezifische virtuelle Paketumgebung eingeben.
add_requires ( " zlib 1.2.11 " )
add_requires ( " python 3.x " , " luajit " )$ xrepo env shell
> python --version
> luajit --versionWir können auch die entsprechende ToolChain -Umgebung in Xmake.lua konfigurieren und laden, z. B. die VS -Kompilierungsumgebung laden.
set_toolchains ( " msvc " )Wir können den folgenden Befehl verwenden, um die angegebene Konfiguration der virtuellen Umgebung global am System für schnelle Umschaltungen am System zu registrieren.
$ xrepo env --add /tmp/base.luaZu diesem Zeitpunkt haben wir eine globale virtuelle Umgebung namens Base gespeichert und können sie über den Befehl List anzeigen.
$ xrepo env --list
/Users/ruki/.xmake/envs:
-base
envs(1) found!Wir können es auch löschen.
$ xrepo env --remove base Wenn wir mehrere virtuelle Umgebungen registrieren, können wir sie auch schnell wechseln.
$ xrepo env -b base shell
> python --versionOder laden Sie die angegebene virtuelle Umgebung direkt so, dass bestimmte Befehle ausgeführt werden
$ xrepo env -b base python --version xrepo env -b/--bind ist die Bindung der angegebenen virtuellen Umgebung. Weitere Informationen finden Sie unter: #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"}Wir können den folgenden Befehl verwenden, um die installierten Pakete zu deinstallieren und zu löschen, um das Muster -Matching zu unterstützen:
$ xrepo remove --all
$ xrepo remove --all zlib pcr *