【发布时间】:2019-12-07 23:26:36
【问题描述】:
我必须处理一个跨平台应用程序,它在 Windows 上需要额外的 3rd 方库,但在 Linux 上不需要(而且该库不支持 Linux)。我已将库打包到 Conan 包中,仅支持 `os=Windows complier="Visual Studio"。现在如果我把这个库作为
[requires]
Library/1.2.3@foo/bar
在我的conanfile.txt 中,conan install 在逻辑上将失败并在 Linux 上出现错误 Missing prebuilt package。
那么有没有办法在conanfile.txt 中有条件地指定所需的包?像Library/1.2.3@foo/bar [os="Windows"] 这样的东西。我通读了柯南文档,但一无所获。
或者告诉conan install忽略错误?
或者我唯一的运气是在两个平台上使用两个不同的conanfile.txt?
我不能使用conanfile.py,因为构建过程不是由柯南管理的,只有依赖项。
【问题讨论】:
-
如果构建过程由CMake管理,可以check for OS there并使用两个不同的conanfile.txts。
-
@nada 感谢您的评论,我只是想知道我是否可以以某种方式避免使用两个 conanfiles(有一行差异)。
-
我会在 CMake 中为此编写一个脚本 ^^,肯定有更优雅的解决方案
-
您应该仍然可以将 conanfile.py 用于依赖项。使用python文件不需要它来控制建筑。
-
@John 感谢您的建议。这是其他 C++ 项目迁移到使用 Conan 作为依赖项管理器的试点项目。最后我为每个平台建议了两个txt文件,并鼓励愿意学习python的开发者编写自己的conanfile.py。
标签: c++ artifactory dependency-management conan