使用柯南打包预先存在的二进制文件的多个配置
Using conan to package multiple configurations of preexisting binaries
我有一组第三方二进制文件,我正试图将其放入 conan 包中。二进制文件位于构建配置的文件夹中:Linux32、Win32、Win64、Win32。
我已经能够使用以下 conanfile.py:
为 Win64 配置生成柯南包
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 配置相同的哈希值。
应该如何设置配置以从预先存在的二进制文件生成包?
如果您只是打包预构建的二进制文件,那么不用 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
我有一组第三方二进制文件,我正试图将其放入 conan 包中。二进制文件位于构建配置的文件夹中:Linux32、Win32、Win64、Win32。
我已经能够使用以下 conanfile.py:
为 Win64 配置生成柯南包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 配置相同的哈希值。
应该如何设置配置以从预先存在的二进制文件生成包?
如果您只是打包预构建的二进制文件,那么不用 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