xmake的基本使用(二)

2 篇文章 0 订阅

xmake的基本使用(二)

xmake的基本使用(一)-- 构建项目
xmake的基本使用(二)-- 导入第三方开源库
xmake的基本使用(三)-- 添加自己写的库至仓库



前言

C/C++语言有着速度快和效率高等优势,但是一般在构建自己的项目时用到的Cake让新手难以适应其规则。另外在导入第三方开源库时,更加麻烦。

本文介绍了使用第三方开源工具xmake的包管理器xrepo导入第三方库时的一些基本操作。


提示:以下是本篇文章正文内容,下面案例可供参考

一、xmake和xrepo介绍?

xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比
makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。

xrepo 是一个基于 xmake 的跨平台 C/C++ 包管理器。它基于 xmake 提供的运行时,但却是一个完整独立的包管理程序,相比 vcpkg/homebrew 此类包管理器,xrepo 能够同时提供更多平台和架构的
C/C++ 包。 Markdown将文本转换为 HTML。

提示:xrepo的安装参考 xrepo官网

二、使用xrepo内置库

1. 安装库

这里以 Eigen 线性方程组库为例

1). 使用命令行安装

xrepo install eigen

安装好提示 install eigen 3.4.0 …ok
xrepo install eigen
xrepo install 安装的包默认为最新版本。
如果想安装固定版本那么加上版本号限制。假设我想安装Eigen的历史版本3.3.8

xrepo install "eigen 3.3.8"

当然可以给定一个版本最低要求

xrepo install "eigen >=3.3.8"

2). 在项目中自动安装

在项目中自动安装只需在项目的根目录的xmake.lua配置文件中添加以下代码即可。

add_requires("eigen")

假设要求使用3.3.7版本,用

add_requires("eigen 3.3.7")

下图为add_requires(“eigen”)的工作原理
假设没有下载就下载安装,安装成功后查找包的位置,并集成到项目中。图片来源于xrepo官网
xrepo 安装原理
此时我们只需要在target作用域范围内加入

add_packages("eigen")

就可以在源文件中使用eigen库了。
xmake.lua 文件详细代码如下:

add_rules("mode.debug", "mode.release")
add_requires("eigen")
target("ntl_test")
    add_packages("eigen")
    set_kind("binary")
    add_files("src/*.cpp")

main.cpp文件如下

#include <iostream>
#include <Eigen/Dense>		//导入Eigen的密集矩阵头文件

using namespace std;

int main(int argc, char** argv)
{
	// 定义及初始化
	Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic> a(2, 2);
    a(0, 0) = 1;
    a(0, 1) = 2;
    a(1, 0) = 3;
    a(1, 1) = 4;
    a.setOnes();
    cout << a << endl;
    cout << "hello world!" << endl;
    return 0;
}

运行结果为:

1 1
1 1
hello world!

(*注: 在add_requires(“eigen”) 之后就可以add_packages(“eigen”)这样当前xmake.lua文件中的所有目标都可以使用 eigen库)

2. 安装指定类型库

因为eigen为一个仅头文件的模板库,这里以zlib库举例

xrepo install -m debug zlib				--安装debug版本库
xrepo install -k shared zlib  			--安装release版本库

同样我们可以安装指定平台包

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

3. 安装其他第三方包管理器的包

xmake目前支持homebrew,vcpkg,conan,pacman,clib等等。
安装此类包时只需在项目中的xmake.lua中更改代码如下(以eigen、zlib为例):

add_requires("eigen", {alias = "eigen"}) 
->
add_requires("vcpkg::eigen", {alias = "eigen"})
--{alias = "eigen"}这个是将此库名称的别名改为eigen,就不需要添加vcpkg,仅在当前xmake.lua中有效
add_requires("zlib", {alias = "zlib"}) 
->
add_requires("brew::zlib", {alias = "zlib"})
--{alias = "zlib"}这个是将此库名称改为zlib,就不需要添加brew,仅在当前xmake.lua中有效

4. 查找包信息

使用xrepo fetch 包名即可获取包的头文件、库文件、版本等信息。
举例:

xrepo fetch eigen

显示结果为:

(base) PS F:\Codes\xmake\eigen_test> xrepo fetch eigen
{ 
  { 
    includedirs = { 
      "C:\Users\wxz\AppData\Local\.xmake\packages\e\eigen\3.4.0\1af8f25c61b04e19afd2699bba8d04c0\include",       
      "C:\Users\wxz\AppData\Local\.xmake\packages\e\eigen\3.4.0\1af8f25c61b04e19afd2699bba8d04c0\include\eigen3" 
    },
    version = "3.4.0",
    license = "MPL-2.0" 
  } 
}
xrepo fetch zlib

显示结果为:

(base) PS F:\Codes\xmake\eigen_test> xrepo fetch zlib 
{ 
  { 
    version = "1.2.13",
    links = { 
      "zlib" 
    },
    includedirs = { 
      "C:/VCPKG/vcpkg/installed/x64-windows-static/include" 
    },
    linkdirs = { 
      "C:/VCPKG/vcpkg/installed/x64-windows-static/lib"     
    } 
  } 
}

三、总结

以上就是本文讲的内容,涉及了xmake安装和使用第三方库。


参考如下:
xmake官网
xrepo官网

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值