У нас есть несколько проектов для встроенных Linux сред. Мы переходим на Конан для нашего управления зависимостями. Общие библиотеки для этих проектов превращаются в пакеты conan. Эти пакеты создаются для нескольких платформ с использованием одной и той же базы кода. Для этих проектов мы используем googletest в качестве основы для модульного тестирования.
Для этих встроенных сред мы привязаны к кросс-компиляторам, поставляемым нам нашим поставщиком. Мы привязаны к g cc 4.4.3 и 5.2.0 для кросс-компиляции нашего кода, что приводит к различным пакетам построения поведения. Поскольку мы используем googletest, я кросс-компилирую версию googletest и добавляю ее в свой артефакт, чтобы можно было разрешить зависимости. Я только что сделал простой conanfile.py для googletest, чтобы создать его, вызывая обычный cmake, но, к сожалению, я не могу собрать версии 1.8.1 и 1.10.0 с использованием кросс-компилятора g cc 4.4.3.
Возможные решения:
- Продолжайте использовать версию googletest 1.8.0 для каждого проекта. Возможно, но с недостатком - невозможность использования новых функций googletest.
- Нет юнит-тестов при использовании профиля g cc 4.4.2. Возможно, но из-за того, что мы определили test_package, он хочет создать модульные тесты. Мы можем обойти это, указав несуществующую тестовую папку при создании пакета. Но это означает другую команду для создания пакета.
- Используйте версию 1.8.0 при сборке для профиля g cc 4.4.3 и используйте более новую версию для других профилей. Возможно?
Хотя при сборке для разных платформ у меня есть кодовая база и один conanfile.py для определения пакета. Используя опции --profile, я кросс-компилирую для разных архитектур. Я хотел бы сохранить это так.
Я попытался указать версию пакета googletest как [> = 1.8.0] в надежде, что для профиля g cc 4.4.3 он подберет Версия 1.8.0, так как это единственная версия с двоичными файлами для этой архитектуры. К сожалению, он находит новые версии и выдает ошибку, что отсутствует готовый пакет для новой версии.
Как сделать так, чтобы один профиль использовал версию 1.8.0 зависимости, а другой профиль использовал версию 1.10 .0 для зависимости?
Одна вещь, которую я хочу предотвратить, - это проверка на основе настроек профиля в моем conanfile.py, так как это создаст зависимость между файлами. Это может заставить меня изменить conanfile.py при добавлении или удалении профилей в будущем.