Когда я устанавливаю библиотеку, она переходит в ${CMAKE_INSTALL_PREFIX}
.
Когда я find_package(
библиотека, она ищет ${CMAKE_INSTALL_PREFIX}
.Cmake изменяется сбойные сборки
В окнах cmake 3.6${CMAKE_INSTALL_PREFIX}
по умолчанию c:\Program Files
. Это сработало хорошо. Однако в cmake 3.7${CMAKE_INSTALL_PREFIX}
по умолчанию c:\Program Files\${PROJECT_NAME}
.
Теперь, когда я устанавливаю библиотеку A
, она отправляется в C:\Program Files\A
.
Когда я find_package(
библиотека A
из библиотеки B
, она ищет C:\Program Files\B
.
Теперь я больше не могу найти свою зависимость. Если мне нужно указать точный путь, на который был установлен A
, я больше ничего не получаю от find_package(
. Я что-то упускаю?
Каков путь (относительно установочного префикса) к файлу '* Config.cmake' для библиотеки * A *? По умолчанию 'find_package()' не выполняет поиск в '$ {CMAKE_INSTALL_PREFIX}'; Вы явно указываете этот каталог? – Tsyvarev
@ Цыварев 'find_package (A)' работает 'FindA.cmake', который является файлом в' $ {CMAKE_MODULE_PATH} '. Они часто предоставляются libA и используют 'find_path (PATHS $ {CMAKE_INSTALL_PREFIX})'. – Stewart
Этот код и описание сильно меняют ситуацию: я ожидал, что * config * mode 'find_package' используется для поиска библиотеки, а не ** модуля **. Похоже, что @skypjack в его ответе предполагает одно и то же: опция * PATH_SUFFIXES * предназначена только для * config *. Кстати, когда вы используете CMake для сборки и установки библиотеки 'A', почему бы не предоставить' * Config.cmake' эту установку? Обычно скрипты 'Find * .cmake' используются, когда предоставление' * Config.cmake' для пакета невозможно. В любом случае, добавьте информацию из вашего комментария ** в сам вопрос. **: как я уже сказал, это имеет смысл. – Tsyvarev