打包程序
Xmake 主要提供下面三种打包方式,用于将目标程序进行对外分发。
生成本地包
通过 xmake package
命令,我们可以生成一个带有 xmake.lua 配置文件的本地包,它里面包含了所有的目标程序二进制文件,并且可以通过 add_requires
包管理接口引入和使用。
包目录结构如下:
sh
tree build/packages/f/foo/
build/packages/f/foo/
├── macosx
│ └── x86_64
│ └── release
│ ├── include
│ │ └── foo.h
│ └── lib
│ └── libfoo.a
└── xmake.lua
一般用于分发二进制的库,以及本地集成使用,更多详细介绍,可以看下文档:使用本地包。
另外,这种方式在配合 内置的宏插件 可以实现 ios 的 universal 二进制打包。
sh
$ xmake macro package -p iphoneos -a "arm64,x86_64"
$ tree ./build/foo.pkg/
./build/foo.pkg/
├── iphoneos
│ ├── arm64
│ │ └── lib
│ │ └── release
│ │ └── libfoo.a
│ ├── universal
│ │ └── lib
│ │ └── release
│ │ └── libfoo.a
│ └── x86_64
│ └── lib
│ └── release
│ └── libfoo.a
└── xmake.lua
生成远程包
我们也可以通过 xmake package -f
命令去生成远程包,用于提交到仓库分发,这种包类似本地包,也有一个 xmake.lua 配置文件,不过区别在于,它不直接存储二进制库,仅仅只有一个配置文件。
我们可以将这个包配置文件,提交到 xmake-repo 官方仓库进行分发,也可以提交到自建的私有仓库中。
注意
不过生成的配置文件,也许不能直接可用,它只是生成一个大概的模版,具体还是需要用户自己编辑修改,调整对应的安装和测试逻辑。
具体详情,我们可以查看文档:生成远程包。
生成安装包 (XPack)
最后这种打包方式最为强大,通过 xmake pack
插件命令实现,它对标 CMake 的 CPack 打包,可以提供各种系统安装包的打包,来实现对目标程序的分发。
- Windows NSIS 二进制安装包
- Windows WIX 二进制安装包
- runself (shell) 自编译安装包
- zip/tar.gz 二进制包
- zip/tar.gz 源码包
- RPM 二进制安装包
- SRPM 源码安装包
- DEB 二进制安装包
它提供的完善的打包配置机制,可以编写灵活的配置脚本,进行更加定制化的生成安装包,不仅仅是二进制包,还有源码包,自编译安装包,归档包都能同时支持。
例如生成 Windows NSIS 安装包。
sh
$ xmake pack -f nsis
更多详情,请查看文档:XPack 打包。