Здравствуйте, Marty, Вы писали:
M>Здравствуйте!
M>Кто их вместе использует? Пользуете стандартным способом?
Да, уже лет 5.
M>Это ж надо самому указывать тулчейн-файл vcpkg.cmake (перед этим найдя его в батнике или .sh), задавать triplet, потом, если есть ещё какой-то тулчейн файл, то делать цепочку.
M>Как-то много возни.
Ну надо же как-то вашей билд системе знать где брать зависимости? Или через аргумент для cmake, или через переменные окружения. Оба способа — правильные.
M>Я хочу так: просто включаешь в свой проект какой-то свой .cmake/vcpkg.cmake, он сам всё определяет, какой хост, какой таргет, формирует triplet, находит, где лежит VCPKG-шный vcpkg.cmake, и подключает его.
M>Никто так не делал?
M>Есть подводные камни?
Я предпочитаю собирать все зависимости в отдельную папку и скармливать её через CMAKE_PREFIX_PATH, чтобы в самом проекте не было вообще никаких упоминаний пакетных менеджеров, а лишь голый cmake.
Подводные камни — это обновление зависимостей, иногда приходится делать полную пересборку всего. У меня в проекте примерно так:
vcpkg_args=(install)
vcpkg_args+=(--triplet="${vcpkg_triplet}")
vcpkg_args+=(--x-install-root="${temp_dir}")
vcpkg_args+=(--overlay-ports="${vcpkg_ports}")
"$vcpkg_root/vcpkg" "${vcpkg_args[@]}"
cp -n -r "${temp_dir}/${vcpkg_triplet}" "${thirdparty_dir}"
На входе vcpkg.json в текущей папке. На выходе в thirdparty_dir будет одна папка, которую я подключаю через CMAKE_PREFIX_PATH.
M>Когда подключать такой свой детектор?
M>Тулчайн файлы отрабатывают обычно до директивы project, но делать какие-то подключения своих файлов до project как-то не очень красиво. Могут быть проблемы, если я свой детектор VCPKG буду после project подключать?
До project(), это нормально, я так раньше делал но отказался, когда перешёл на вышеописанный способ.