我想创建一个可以下载的项目源代码的conan Package 器。
请注意,我不能修改该项目中的任何内容;我只是得到了一个URL,从那里可以下载它。
我知道如何通过在conanfile.py
的source()
方法中添加一些代码来下载和解压缩项目的源代码(使用tools
模块)。
这个项目(下载并解压缩后)可以用cmake构建,也可以使用Boost。
所以我在build_requires
中添加了boost/1.75
(我随意选择了这个版本)。
在该项目的cmake配置阶段,可以将Boost的位置文件夹作为参数传递给cmake(例如-DWITH_BOOST=path_name
)。
但是在build()
方法中,我不知道如何获取conan缓存中安装Boost 1.75的文件夹,知道这一点后,我将把它传递给cmake.configure(...)
调用。
有没有办法从conanfile.py
中获取一个依赖项的包文件夹?也许可以使用self.build_requires['boost/1.75'].package_folder
之类的东西?
1条答案
按热度按时间jgzswidk1#
获取依赖路径的最简单方法是:
但它并不总是有效的
self.dependencies
在不计算依赖关系树时为none,例如在conan build
https://github.com/conan-io/conan/issues/10535期间,您可以使用以下变通方法:获取这些信息最可靠的方法是从
conanbuildinfo.txt
读取if--这个文件是在安装阶段创建的,你可以使用不同的生成器,比如-g json
,以不同的格式使用它。我在代码中找到的最后一种方法(这可以简化,但这就是我现在所能提供的):