conan.io:使用虚拟运行环境调用exe

时间:2018-07-11 10:17:33

标签: virtual-environment conan

我有一个hello工具,其中仅包含exe文件(无源文件)。
您好工具结构:

bin
   helloBin.exe
helloRoot.exe
conanfile.py

conanfile.py内容:

class ToolHelloConan(ConanFile):
   name = "ToolHello"
   version = "0.1"
   settings = "os", "compiler", "build_type", "arch"

def package(self):
   self.copy("*")

def package_info(self):
   self.cpp_info.libs = self.collect_libs()

我已将hello工具导出到本地缓存:conan export-pkg . ToolHello/0.1@user/testing。这会将所有exe复制到local_cache/ToolHello/0.1/user/testing/package/hash/bin中。本地缓存中的bin看起来像这样:

bin
   helloBin.exe
helloRoot.exe

我已经定义了一个仅包含conanfile.txt

的工具集成项目
[requires]
   ToolHello/0.1@user/testing

[generators]
   virtualrunenv

在工具集成项目中运行conan install .并激活虚拟运行环境后,我只能调用helloRoot.exe,因为它位于bin目录中,但是我无法执行bin / bin / helloBin.exe

问题:如何运行不是直接位于local_cache/ToolHello/0.1/user/testing/package/hash/bin而是位于local_cache/ToolHello/0.1/user/testing/package/hash/bin/directory中的exe文件?

1 个答案:

答案 0 :(得分:1)

您需要定义不是默认值(bin)的绑定。将此添加到您的 conanfile.py

def package_info(self):
   self.cpp_info.bindirs = ["bin", "bin/directory"]

如果还需要包含package文件夹的根目录,则可能需要使用:

def package_info(self):
   self.cpp_info.bindirs = ["", "bin", "bin/directory"]