Я пытаюсь создать простую демку только заголовочная библиотека называется Foo и потребовать другую библиотеку под названием бар.
Структура Foo это:
Foo / включать / foo.hpp — просто заголовочный файл теста …
Foo / conanfile.py
from conans import ConanFile, CMake
class FooConan(ConanFile):
name = "foo"version = "0.0.1"exports = "*"
экспортируйте его, используя:
conan export steazzalini/testing
бар / conanfile.txt
[requires]
foo/0.0.1@steazzalini/testing
[generators]
cmake
Конан установить не может сказать:
ERROR: Can't find a 'foo/0.0.1@steazzalini/testing' package for the specified options and settings
- Try to build from sources with "--build foo" parameter
- If it fails, you could try to contact the package author , report your configuration and try to collaborate to support it.
Package configuration:
- Settings:
- Options:
Заранее спасибо за помощь!
Просто небольшое уточнение, я думаю, вы имели в виду эту библиотеку Foo требуется бар.
Каждый пакет должен быть создан, даже если это библиотека только для заголовков. Когда ты conan export
он копирует исходный код в рецепт (другой альтернативой будет использование source()
метод для получения исходного кода), но пакет все еще должен быть создан.
build()
метод не является необходимым, так как нет ничего, чтобы построить, но вы должны добавить package()
метод к вашему рецепту, что-то вроде:
def package(self):
self.copy("*.h", dst="include", src="include")
Затем вы должны создать пакет. Это можно сделать несколькими способами, одним из которых будет установка Foo пакет:
$ conan install foo/0.0.1@steazzalini/testing --build
Но, как правило, в этом нет необходимости, так как вы также можете создать его при вызове установки из потребительского проекта ( бар один):
$ conan install . --build
Существует также вариант, build_policy
это может быть добавлено к рецептам, и хорошо подходит для библиотек только заголовков. Может быть missing
или же always
, Последнее полезно при создании пакетов из последнего коммита проекта git (master / head ..). Используя эту политику, потребители не должны явно звонить --build
указать, что пакет должен быть создан. Таким образом, рецепт может быть что-то вроде:
from conans import ConanFile, CMake
class FooConan(ConanFile):
name = "foo"version = "0.0.1"exports = "*"build_policy = "missing"
def package(self):
self.copy("*.h", dst="include", src="include")
Наконец, вы можете быть заинтересованы в $ conan new foo/0.0.1@steazzalini/testing -i
команда, которая создаст conanfile.py
для вас с некоторыми из этих вещей. -t
опция для такой команды полезна для создания test_package
утилита для создания и тестирования пакетов, чтобы убедиться, что пакет правильный. Посмотри на http://docs.conan.io/en/latest/packaging/testing.html#automatically-creating-and-testing-packages
ОБНОВЛЕНИЕ: conan docs получил новый раздел, специфичный для библиотек только для заголовков: http://docs.conan.io/en/latest/howtos/header_only.html
Других решений пока нет …