Comments 17
Намучался с конаном, перешёл на vcpkg)
как вариант еще попробовать NIX SHELL там еще проще ,тоже с конаном намучался , кучу ошибок споймал ,несколько часов потратил и все надоело пошел в nix
Интересно, но до конана пока не дотягивает: Nix runs on Linux and macOS.
В файле conanfile.txt забыли layout указать. Без него немножко грустно становится
Да, с ним интереснее:
[layout]
cmake_layout
Тогда папку вывода указывать не нужно:
conan install . --build=missing
cd build
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE="./Release/generators/conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Release
ninja
Тогда Conan и CMake файлы раскидываются по отдельным папкам и не мешаются с исполняемым файлом проекта.
Ну и тут же,
1) после conan install файлы пресетов создаются, так что можно сделать `cmake --preset conan-release` (если я не путаю)
2) и ни кто не мешает сделать `conan build .` что при необходимости выполнит другие команды конана (включая install) если они прописаны в conanfile.py (не txt, а именно py который позволяет сделать более глубокую логику)
a что еще для linux есть? conan не выглядит для меня как 'простое' решение.
Вот полный список: https://stackoverflow.com/a/36023212/630169
Из живого есть только vcpkg
и Buckaroo
, но такого количества и качества поддержки, документации, сообщества, сопровождения, количества пакетов, поддерживаемых платформ, систем сборок и т.п. как у Conan пока не наблюдается и близко! Хотя у vcpkg
тоже не слабая документация - тут MS на высоте.
Почему во всех статьях предполагается, что в системе уже установлен toolchain?.. Canon может сам установить, скажем, clang? То есть могу я указать clang в списке зависимостей (подобно как в данной статье в качестве зависимости указан SQLite)?
Canon может сам установить, скажем, clang?
Canon не может, а Conan может:
https://docs.conan.io/2/tutorial/consuming_packages/use_tools_as_conan_packages.html
То есть могу я указать clang в списке зависимостей (подобно как в данной статье в качестве зависимости указан SQLite)?
Да можно (см. ссылку выше), в том то и смысл: можно использовать любой компилятор под любую платформу, что и сказано в начале.
Почему во всех статьях предполагается, что в системе уже установлен toolchain?.
Про всё во введении не расскажешь - статья увеличится в несколько раз.
теоретически может. Где-то в одном из туториалов было "укажите mingw-gcc как tool, и всё будет установлено и сможете в кросс-компайл." да и cmake они тоже рекомендуют указать как tool.
Только дальше начинаются зависимость на зависимости и зависимостью погоняет. Когда я пытался указать как зависимость Qt - устал компилять, да результата не получил, так как в conan-center хранится ограниченное количество вариантов опций/компиляторов/систем, а того чего нет - приходится на месте строить. А для постройки тянется одно, другое, третье... и еще системные требования. В cross-compile тоже не очень получилось, уже не вспомню почему, но что-то ему не хватило для счастья....
В итоге плюнул, и заявил что Qt должна быть в системе установлена. А те библиотеки, который от нее зависят, вручную переписывал conanfile'ы и в свой репозиторий клал.
В общем идея на пять, а реализация недотягивает.... и винить то в общем-то их не в чем.
У conan 2 есть как много минусов, так и много плюсов. С одной стороны, он очень гибкий, поэтому не несет в себе ровно один сценарий использования при организации своих проектов/ библиотек, с другой стороны - он показывает к чему нужно стремиться при проектировании многомодульных систем и дает все инструменты для этого.
Да и его поддерживают производители множества библиотек, т.к. выгладывают своевременно новые версии библиотек в conancenter.
Есть репы, которые аккумулируют уже созданные примеры использования.
Пример: https://github.com/Dimitrius-dev/conan2-examples
Мб кому-нибудь полезно, если хочется посмотреть именно на уже собранные шаблоны.
давайте рассмотрим простой проект
А давайте не простой? Почти в каждой статье берут сишную(!) либу на два файла и героически используют её API.
Давайте с зависимостями с кучей таргетов и плагинами. И с санитайзерами. А бонусом соберём это всё под Android.
В моём текущем проекте так и есть, но описывать не могу - NDA: Linux, QNX, куча целей, разные toolchain, сотни библиотек, в т.ч. свои закрытые. Однако это уже будет не статья, а большой учебник: вот, например, можно взять отличный учебник от Conan и вперёд: https://docs.conan.io/2/tutorial.html
пока выглядит так, что проще один раз руками поставить зависимость, чем добавлять еще несколько шагов к сборке и еще одну тулзу
[Перевод] Управление пакетами C ++ с помощью Conan: Введение