我有一个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文件?
答案 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"]