Использование conan для упаковки нескольких конфигураций уже существующих двоичных файлов

У меня есть набор сторонних двоичных файлов, которые я пытаюсь поместить в пакет conan. Бинарные файлы находятся в папках для конфигурации сборки: Linux32, Win32, Win64, Win32.

Мне удалось создать пакет conan для конфигурации Win64, используя следующий файл conanfile.py:

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.

Как должна быть установлена ​​конфигурация для создания пакета из уже существующих двоичных файлов?


person Kevin Lannen    schedule 19.07.2017    source источник


Ответы (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

person drodri    schedule 19.07.2017