Skip to content

[Fix Package]: assimp v6.0.5 编译失败:找不到 unzip.h #10469

Description

@githubnotebooks

环境信息

  • 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.

调查发现

  1. 系统已有 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 源码。
  1. 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 配置变化了么?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions