xmake+xrepo自建仓库添加交叉编译工具链

xmake+xrepo自建仓库添加交叉编译工具链

最近想将交叉编译工具链放到xrepo自建仓库中,在xmake中引用,方便多个电脑快速实现交叉编译。

xmake官方文档感觉不够详细,折腾了好久,这里做个记录。

基本步骤如下:

  1. 添加自建仓库地址到xrepo的repo列表;
  2. 打包上传编译链到自建仓库;
  3. 工程的xmake.lua添加交叉编译工具链配置

1.自建xrepo包仓库

直接Fork或者将官方包仓库上传到自己的git仓库,xrepo官方仓库地址:

xmake-io/xrepo: 🗂️ A cross-platform C/C++ package manager based on Xmake (github.com)

xrepo: 一个基于 Xmake 的跨平台 C/C++ 包管理器 (gitee.com)

添加自建仓库地址到xrepo的搜索仓库:

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

添加后可以使用list-repo命令查看:

none@ubuntu:~/toolchain/packages$ xrepo list-repo
global repositories:
    gitlab https://git.abc.cn/xxx/toolchain.git 
    build-artifacts https://gitee.com/xmake-mirror/build-artifacts.git main 
    xmake-repo https://gitee.com/tboox/xmake-repo.git master 
    builtin-repo /home/none/.local/share/xmake/repository 

4 repositories were found!

2.上传文件到自建包仓库

这里使用树莓派的一个交叉编译工具链,打包成tgz压缩包。放在对应目录下:

none@ubuntu:~/toolchain/packages/r/rpi_toolchain$ ls  ../../
7  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
none@ubuntu:~/toolchain/packages/r/rpi_toolchain$ tree .
.
├── rpi
│   └── rpi_toolchain_4.9.3.tgz
└── xmake.lua

1 directory, 2 files
none@ubuntu:~/toolchain/packages/r/rpi_toolchain$ 

编写xmake.lua:

package("rpi_toolchain")

    set_kind("toolchain")
    -- set_homepage("https://gcc.gnu.org/")
    set_description("The raspberry pi toolchain")

    add_versions("1.0.0", "local")

    on_install("@linux", function (package)
        -- 解压工具链压缩包
        os.vrunv("tar", {"-xzvf", path.join(os.scriptdir(), "rpi", "rpi_toolchain_4.9.3.tgz")})
        -- 复制工具链到安装目录
        os.vcp("arm-rpi-4.9.3-linux-gnueabihf/*", package:installdir())
    end)

    on_test(function (package)
        print("package:installdir: ", package:installdir())
        os.vrun("arm-linux-gnueabihf-gcc --version")
    end)

工具链文件放在仓库中,所以不用配置url,下面这个不确定是不是必要的,感兴趣的朋友可以试试去掉:

add_versions("1.0.0", "local")

添加工具链及xmake.lua之后,git push推到服务器即可。

然后就可以使用xrepo search搜索我们的包,搜索到即可。

通过xrepo install安装rpi_toolchain:

xrepo install -vD rpi_toolchain

-vD可以显示详细的安装日志及错误输出。

3.在工程中集成交叉编译工具链

创建一个demo工程:

xmake create -l c++ demo

修改xmake.lua:

add_rules("mode.debug", "mode.release")

-- 引用rpi_toolchain包
add_requires("rpi_toolchain")

-- 定义toolchain
toolchain("rpi_cc")
    set_kind("cross")
    
target("demo")
    set_kind("binary")
    add_files("src/*.c")
	-- 将编译链与包绑定
    set_toolchains("rpi_cc@rpi_toolchain")

此时进行编译,即可得到交叉编译的bin文件:

none@ubuntu:~/demo$ xmake -rv
[ 50%]: cache compiling.release src/main.c
/home/none/.xmake/packages/r/rpi_toolchain/1.0.0/725e51fe81b74141ade9efbd3ccaf900/bin/arm-linux-gnueabihf-gcc -c -fvisibility=hidden -O3 -DNDEBUG -o build/.objs/demo/linux/x86_64/release/src/main.c.o src/main.c
checking for flags (-MMD -MF) ... ok
checking for flags (-fdiagnostics-color=always) ... ok
[ 75%]: linking.release demo
/home/none/.xmake/packages/r/rpi_toolchain/1.0.0/725e51fe81b74141ade9efbd3ccaf900/bin/arm-linux-gnueabihf-g++ -o build/linux/x86_64/release/demo build/.objs/demo/linux/x86_64/release/src/main.c.o -s
[100%]: build ok, spent 0.353s
none@ubuntu:~/demo$ 
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值