Re: CMake+VCPKG
От: SaZ  
Дата: 01.02.26 14:19
Оценка:
Здравствуйте, 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(), это нормально, я так раньше делал но отказался, когда перешёл на вышеописанный способ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.