Cibuildwheel 无法使用静态库进行编译

Cibuildwheel Fails to Compile With Static Libraries

我有一个 Python C 扩展模块,它依赖于静态库。下面是我的文件树,我没有包含所有文件,因为我试图简化问题。

folder/
├── src/
|   ├── main.c
|   └── other.c
├── include/
|   ├── glfw3native.h
|   └── glfw3.h
├── lib/
|   └── libglfw3.a
└── setup.py

下面是我的 setup.py 文件,我删除了一些不需要的行。

import setuptools

setuptools.setup(
    ext_modules = [
        setuptools.Extension(
            "Module.__init__", ["src/main.c", "src/other.c"],
            include_dirs = ["include"],
            library_dirs = ["lib"],
            libraries = ["glfw"])
    ])

我可以使用以下命令成功编译我的项目。

python setup.py bdist_wheel

现在我想使用cibuildtools为多个平台编译我的项目。

cibuildwheel --platform linux

由于某种原因,程序在尝试 link 库时崩溃。即使指定了库路径,它也会显示以下错误。

cannot find -lglfw

为什么用cibuildwheel编译时会出现这种情况?

因为静态二进制文件在每个系统上都不同,所以我需要在相应的平台上编译我的库。最后,我使用 CIBW_BEFORE_ALL 变量为我的库执行构建命令。