【问题标题】:Using conan to package multiple configurations of preexisting binaries使用 conan 打包预先存在的二进制文件的多个配置
【发布时间】:2017-07-19 22:25:53
【问题描述】:

我有一组第三方二进制文件,我正试图将它们放入 conan 包中。二进制文件位于构建配置的文件夹中:Linux32、Win32、Win64、Win32。

我已经能够使用以下 conanfile.py 为 Win64 配置生成一个 conan 包:

from conans import ConanFile

class LibNameConan(ConanFile):
    name = "LibName"
    version = "1.1.1"
    settings = "os", "compiler", "build_type", "arch"
    description = "Package for LibName"
    url = "None"
    license = "None"

    def package(self):
        self.copy("*", dst="lib", src="lib")
        self.copy("*.c", dst="include", src="include", keep_path=False)

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

我在 powershell 中运行以下命令:

conan install
mkdir pkg
cd pkg
conan package .. --build_folder=../
cd ..
conan export name/testing
conan package_files libname/1.1.1@name/testing

对于 Win64,这可以按预期工作。当我使用 Win32 二进制文件重复这些步骤时,我没有得到包的不同哈希值。

我试过跑步:

conan install -s arch=x86

但是,这仍然会导致包具有与 x86_64 配置相同的哈希值。

应该如何设置配置以从预先存在的二进制文件生成包?

【问题讨论】:

    标签: conan


    【解决方案1】:

    如果您只是打包预构建的二进制文件,则无需 package() 方法也可以,这仅在从配方构建时相关:

    from conans import ConanFile
    
    class LibNameConan(ConanFile):
        name = "LibName"
        version = "1.1.1"
        settings = "os", "compiler", "build_type", "arch"
        description = "Package for LibName"
        url = "None"
        license = "None"
    
        def package_info(self):
            self.cpp_info.libs = self.collect_libs()
    

    除非出于某些重要原因您也想打包源代码,否则您是否希望它们也能够调试您的依赖项?在这种情况下,请将其设置为build_type

    但是,这可能与您的问题几乎无关。由于您的包没有依赖项并且您也没有使用任何生成器,因此您不需要conan install,并且您在那里使用的设置无效。

    package_files 时必须指定二进制配置的设置:

    $ conan package_files libname/1.1.1@name/testing # using your default config
    $ conan package_files libname/1.1.1@name/testing -s arch=x86  # 32 bits instead of 64
    ...
    

    可能推荐的方法是使用配置文件:

    $ conan package_files libname/1.1.1@name/testing # using your default profile
    $ conan package_files libname/1.1.1@name/testing -pr=myprofile2
    

    文档最近被重新编写,您可能需要检查:https://docs.conan.io/en/latest/creating_packages/existing_binaries.html

    【讨论】:

      猜你喜欢
      • 2010-12-23
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      相关资源
      最近更新 更多