EgoRusMarch
@EgoRusMarch
C++ Developer

Как заставить CMake искать библиотеку нужной разрядности через find_package?

Собирал x86 и x64, притом в один каталог не получилось. CMake выдал ошибку при попытке сконфигурировать другую разрядность (относительно предыдущей). Мне нужно каким-то образом выбирать каталог для поиска OpenCVConfig.cmake через find_package(), т.е. добавлять его в CMAKE_PREFIX_PATH видимо. Я смотрел как можно через FIND_LIBRARY_USE_LIB32_PATHS и FIND_LIBRARY_USE_LIB64_PATHS, но это не годится, там нет каталогов lib32 и lib64, только lib. Может быть можно руками их объединить, но не уверен, что сделаю всё как нужно. Вне каталогов x86/x64 я нашёл одно маленькое отличие =) (см. скрин). Может быть можно добавить оба пути туда, но опять же, я не уверен, что это выгорит (может после этого он будет забирать из него первый попавшийся, а не нужный). Короче, как бы это по уму сделать?
5f1600f4ebbcd909356741.png
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
EgoRusMarch
@EgoRusMarch Автор вопроса
C++ Developer
Итак, вот как это работает:
if (${CMAKE_SIZEOF_VOID_P} STREQUAL 4)
    message("It's 32 bit build")
elseif (${CMAKE_SIZEOF_VOID_P} STREQUAL 8)
    message("It's 64 bit build")
endif ()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Собирал x86 и x64, притом в один каталог не получилось.

И не надо. Лично я считаю это извратом (несколько конфигураций в одной общей папке), заставляющим выдумывать соглашения об именах и всякие раскладки по подпапкам, которые у всех потом свои, велосипедные.

Мне нужно каким-то образом выбирать каталог для поиска OpenCVConfig.cmake через find_package(), т.е. добавлять его в CMAKE_PREFIX_PATH видимо.

Неплохая идея. И почему не получилось?
Вообще по идее конфиг библиотеки (который OpenCVConfig.cmake) должен проверять разрядность и не давать подключать библиотеку с невалидной разрядностью. По идее тогда и несколько путей можно указать (не уверен, нужно проверить).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы