我必须处理一个跨平台的应用程序,该应用程序需要在Windows上但在Linux上不需要一个第三方库(该库无论如何都不支持Linux)。我已将该库打包到一个Conan包中,仅支持`os = Windows complier =“Visual Studio”。现在,如果我把这个库

[requires]
Library/1.2.3@foo/bar

在我的conanfile.txt中,在逻辑上conan install将失败,并在Linux上显示Error Missing prebuilt package

那么有没有办法在conanfile.txt中有条件地指定所需的软件包?类似于Library/1.2.3@foo/bar [os="Windows"]。我通读了柯南文档,但一无所获。

还是告诉conan install忽略错误?

还是我唯一的运气是在两个平台上使用两个不同的conanfile.txt

我不能使用conanfile.py,因为构建过程不是由柯南管理的,而是仅由依赖项管理的。

最佳答案

我想说的是,最好的选择是conanfile.py,但是由于您无法使用它,您将需要保留两个conanfile.txt,每个平台一个。

在conanfile.txt中添加条件是不可能的,因为这会花费很大的开发精力,并且conafile.py能够处理条件,因为它是python脚本。

@nada解决方案很好,您可以根据您的操作系统使用CMake来调用柯南,但是您也可以尝试cmake-conan,这对于您的特定情况听起来更好。

07-24 14:03