Manajer Paket Cross-Platform C ++ Berdasarkan Xmake
Dukung proyek ini dengan menjadi sponsor. Logo Anda akan muncul di sini dengan tautan ke situs web Anda. [Menjadi sponsor]
XREPO adalah manajer paket cross-platform C/C ++ berdasarkan XMake.
Ini didasarkan pada runtime yang disediakan oleh XMake, tetapi ini adalah program manajemen paket yang lengkap dan independen. Dibandingkan dengan manajer paket seperti VCPKG/Homebrew, Xrepo dapat menyediakan paket C/C ++ untuk lebih banyak platform dan arsitektur pada saat yang sama.
Dan itu juga mendukung seleksi semantik multi-versi. Selain itu, ini juga merupakan repositori terdistribusi terdesentralisasi. Ini tidak hanya menyediakan repositori XMake-Repo resmi, tetapi juga mendukung pengguna untuk membangun beberapa repositori pribadi.
Pada saat yang sama, Xrepo juga mendukung pemasangan paket dari manajer paket pihak ketiga seperti VCPKG/Homebrew/Conan, dan menyediakan informasi tautan perpustakaan yang terpadu dan konsisten untuk memfasilitasi integrasi dan docking dengan proyek pihak ketiga.
Jika Anda ingin tahu lebih banyak, silakan merujuk ke: Dokumen, GitHub dan Gitee

Kami hanya perlu menginstal XMake untuk menggunakan perintah XREPO. Tentang pemasangan XMake, kita dapat melihat: dokumen instalasi XMake.
Selain secara langsung mengambil paket instalasi dari repositori resmi: xmake-repo.
Kami juga dapat menambahkan sejumlah repositori yang dibangun sendiri, dan bahkan sepenuhnya mengisolasi jaringan eksternal, dan hanya mempertahankan instalasi dan integrasi paket pribadi pada jaringan internal perusahaan.
Cukup gunakan perintah berikut untuk menambahkan alamat repositori Anda sendiri:
$ 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 " )Berikut ini adalah keseluruhan arsitektur dan proses kompilasi yang terintegrasi dengan 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 dapat dengan cepat mengekspor paket yang diinstal, termasuk file pustaka yang sesuai, file header, dan sebagainya.
$ xrepo export -o /tmp/output zlibAnda juga dapat mengimpor paket instalasi yang diekspor sebelumnya pada mesin lain untuk mengimplementasikan migrasi paket.
$ 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)Selain itu, Anda sekarang dapat mencari paket mereka dari manajer paket pihak ketiga seperti VCPKG, Conan, Conda, dan Apt. Anda hanya perlu menambahkan paket namespace yang sesuai, misalnya:
$ 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 ..Kami dapat menyesuaikan beberapa konfigurasi paket dengan menambahkan file xmake.lua di direktori saat ini, dan kemudian masukkan paket virtual paket tertentu.
add_requires ( " zlib 1.2.11 " )
add_requires ( " python 3.x " , " luajit " )$ xrepo env shell
> python --version
> luajit --versionKami juga dapat mengonfigurasi dan memuat lingkungan toolchain yang sesuai di xmake.lua, misalnya, memuat lingkungan kompilasi VS.
set_toolchains ( " msvc " )Kami dapat menggunakan perintah berikut untuk mendaftarkan konfigurasi lingkungan virtual yang ditentukan secara global ke sistem untuk switching cepat.
$ xrepo env --add /tmp/base.luaPada saat ini, kami telah menyelamatkan lingkungan virtual global yang disebut basis, dan kami dapat melihatnya melalui perintah daftar.
$ xrepo env --list
/Users/ruki/.xmake/envs:
-base
envs(1) found!Kami juga bisa menghapusnya.
$ xrepo env --remove base Jika kami mendaftarkan beberapa lingkungan virtual, kami juga dapat beralih dengan cepat.
$ xrepo env -b base shell
> python --versionAtau secara langsung memuat lingkungan virtual yang ditentukan untuk menjalankan perintah tertentu
$ xrepo env -b base python --version xrepo env -b/--bind adalah untuk mengikat lingkungan virtual yang ditentukan. Untuk detail lebih lanjut, lihat: #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"}Kami dapat menggunakan perintah berikut untuk menghapus instalan dan menghapus paket yang diinstal, pencocokan pola pendukung:
$ xrepo remove --all
$ xrepo remove --all zlib pcr *