【问题标题】:Conan-Package: Getting compiled files from other Conan-PackagesConan-Package:从其他 Conan-Packages 中获取编译文件
【发布时间】:2018-12-31 19:09:14
【问题描述】:

我使用柯南作为 C++ 的依赖管理器,我想创建一个包,它需要来自另一个已经创建的柯南包的编译文件。 我目前正在尝试为 OpenStreetMap-Library OSM-binary (https://github.com/scrosby/OSM-binary.git) 创建一个包。

此项目的 Makefile(可在 ./OSM-binary/src/Makefile 找到)需要来自 protobuf- 的名为 protoc 的文件项目 (https://github.com/google/protobuf)。这个protoc-文件可以在./protobuf/src中编译protobuf-project后找到。

如果没有这个文件,编译 OSM 源将失败并出现错误:make: ../protoc: Command not found


问题

正如柯南的文档建议将我需要的文件复制到我的包中的文件夹,例如头文件到 ./include,库到 ./lib 等。 据此,在通过 make 构建 protobuf-project 之后,我正在通过

复制提到的文件
def package(self):
    self.copy("*.so", dst="lib", keep_path=False)
    self.copy("protoc", dst="scripts", src="./protobuf/src")

到一个名为“脚本”的文件夹。

但此时黑魔法开始了。 我的第一个问题是,如何从另一个包访问这些打包文件(例如 *.so 文件或包中存在的任何其他文件(此处为 protoc 文件))? 对我来说,即使在阅读了柯南的文档之后,也不清楚柯南如何存储它的打包文件以及如何访问这些或任何其他在上一步中打包的文件。


现在回到OSM-Project,我的方法是通过tools.replace 命令在Makefile 中手动设置正确的路径。 首先,我将 protobuf-packaged 声明为一项要求

requires = "protobuf/2.5.0@test/testing"

并用 protoc-file 的正确路径替换了 osm-Makefile 中的相应行(在 1.3.3 版中,第 7 行)。

tools.replace_in_file("OSM-binary/src/Makefile",
                      "PROTOC   ?= protoc",
                      "PROTOC   ?= <path-to-file>/protoc")

现在这将我们引向我的实际问题:如何获取 protoc-文件的路径,该文件可以在名为的文件夹中的 protobuf-package 中找到脚本,或者有其他方法吗?

谢谢, 克里斯

【问题讨论】:

    标签: c++ protocol-buffers dependency-management conan


    【解决方案1】:

    有不同的方法可以从你的依赖项中访问文件:

      1234563查找更多信息here 1234563您可以在脚本中使用的路径是当前路径,或self.build_folder。导入的文件会在构建后自动删除,所以不会意外重新打包。检查imports docs
    • 您可以通过 self.deps_cpp_info 属性从依赖项中获取信息。检查reference here。这意味着您可以使用类似

    • 的方式获取到 protobuf 依赖项的路径
    def build(self):
       # Get the directory where protobuf package is installed
       protoc_root = self.deps_cpp_info["protobuf"].rootpath
       # Note this is a list
       protoc_bin_paths = self.deps_cpp_info["protobuf"].bin_paths
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多