带有静态和动态库的柯南库

问题描述

我有一个使用 libusb 作为柯南依赖项的项目。对于大多数编译(Windows 和 Linux),仅使用静态库就足够了,但是要将这个项目从 Linux 交叉编译到 OSX,它需要 .dylib.a 文件。当我使用依赖项运行 conan install 时,如果我将 shared 属性设置为 true,它会将 --enable-shared --disable-static 附加到配置过程,如果我将它设置为 false,它会设置--disable-shared --enable-static

在 Conan 中有什么方法可以直接影响配置命令(我已经试过了,确保在编译库期间创建了这两个文件)。

解决方法

我最初开发了 Conan 软件包,从那时起社区对其进行了大量改进。

答案是否定的。为什么? Conan 包被开发用于将所有项目的共享库与静态库分开。每个包都有一个特定的包 ID,它们在库方面没有混合。这是一个包装设计,而不是柯南的理智规则。

如果您的项目同时使用这两个库,我会说有些地方确实有问题,应该修复,而不是寻找可能比解决实际问题花费更多时间的包解决方法。

但如果您没有找到解决方案,则有一个技巧,您可以使用 Deploy 生成器,将两个库下载到文件夹并从该文件夹配置您的项目消耗。

影响柯南使用相同的包引用,但它的设计不允许不同的选项。另一种选择是分叉原始项目并删除这些选项,并添加一个新选项“两者”,其中两者都存在。请记住,“两者”都不会被接受为官方选项。