环境信息
- OS: Arch Linux (全新安装)
- xmake 版本: v3.0.9+20260519
问题描述
安装 assimp v6.0.5 时编译失败,报错找不到 unzip.h。
错误信息
/home/someone/.xmake/cache/packages/2607/a/assimp/v6.0.5/source/code/Common/ZipArchiveIOSystem.cpp:57:14: fatal error: unzip.h:没有那个文件或目录
57 | # include <unzip.h>
| ^~~~~~~~~
compilation terminated.
调查发现
- 系统已有 minizip:
/usr/include/minizip/unzip.h 存在
/usr/lib/pkgconfig/minizip.pc 存在
pkg-config --cflags minizip 没有输出(因为 Cflags 指向 /usr/include 默认路径)
- 所以代码中要使用
unzip.h,应该包含头文件 #include <minizip/unzip.h>,但 assimp 报错显示的是 include <unzip.h>,所以接下来检查 assimp 源码。
- assimp 代码逻辑:
#ifdef ASSIMP_USE_HUNTER
# include <minizip/unzip.h>
#else
# include <unzip.h>
#endif
// 看来需要定义 ASSIMP_USE_HUNTER 才能使用 <minizip/unzip.h>
是不是 xmake 打包时没有添加 ASSIMP_USE_HUNTER?xmake 处理依赖的顺序是什么?是通过 xrepo 安装 minizip 还是使用系统的 minizip?我看到 xmake-repo 有 arch 的 CI 流程,为啥之前没有测试出来?是 arch 的 minizip.pc 配置变化了么?
环境信息
问题描述
安装 assimp v6.0.5 时编译失败,报错找不到
unzip.h。错误信息
调查发现
/usr/include/minizip/unzip.h存在/usr/lib/pkgconfig/minizip.pc存在pkg-config --cflags minizip没有输出(因为 Cflags 指向/usr/include默认路径)unzip.h,应该包含头文件#include <minizip/unzip.h>,但 assimp 报错显示的是include <unzip.h>,所以接下来检查 assimp 源码。是不是 xmake 打包时没有添加
ASSIMP_USE_HUNTER?xmake 处理依赖的顺序是什么?是通过 xrepo 安装 minizip 还是使用系统的 minizip?我看到 xmake-repo 有 arch 的 CI 流程,为啥之前没有测试出来?是 arch 的 minizip.pc 配置变化了么?