Pull to refresh

Comments 17

Намучался с конаном, перешёл на vcpkg)

как вариант еще попробовать NIX SHELL там еще проще ,тоже с конаном намучался , кучу ошибок споймал ,несколько часов потратил и все надоело пошел в nix

В файле 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 на высоте.

Vcpkg хоть и не без недостатков, но по перечисленным параметрам не уступает Conan.

Ну да ну да... "Даже близко". Где ж это видано, чтоб добавил зависимость, и она скорее всего собралась с первого раза. Не по конановски

Почему во всех статьях предполагается, что в системе уже установлен 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

пока выглядит так, что проще один раз руками поставить зависимость, чем добавлять еще несколько шагов к сборке и еще одну тулзу

Sign up to leave a comment.

Articles