Force cmake FIND_LIBRARY посмотреть в пользовательском каталоге

cmake версия 2.8.4

У меня есть следующие портативные библиотеки времени исполнения apache, которые я скомпилировал и хочу, чтобы мое приложение связывалось с.

В моем каталоге проектов, где находятся мои apr-библиотеки:

gw_proj/tools/apr/libs

В моем CMakeLists.txt у меня есть следующее:

FIND_LIBRARY(APRUTIL NAMES "aprutil-1"
  PATHS ${PROJECT_SOURCE_DIR}/tools/apr/libs)

Моя проблема связана с машиной, на которой уже установлена ​​переносимая среда выполнения apache, она будет искать ее в этой папке:

/usr/lib

Поэтому всегда будет игнорировать мой пользовательский путь.

Как я могу заставить FIND_LIBRARY всегда смотреть в моем настраиваемом каталоге:

gw_proj/tools/apr/libs

Большое спасибо за любые предложения

Ответ 1

Вы можете указать порядок поиска, используя один или несколько из NO_DEFAULT_PATH, NO_CMAKE_ENVIRONMENT_PATH , NO_CMAKE_PATH, NO_SYSTEM_ENVIRONMENT_PATH, NO_CMAKE_SYSTEM_PATH, CMAKE_FIND_ROOT_PATH_BOTH, ONLY_CMAKE_FIND_ROOT_PATH или NO_CMAKE_FIND_ROOT_PATH.

Из документов для find_library:

Порядок поиска по умолчанию разработан как наиболее специфичный для наименее специфичных для случаев общего использования. Проекты могут переопределять порядок, просто вызывая команду несколько раз и используя опции NO_ *:

find_library(<VAR> NAMES name PATHS paths... NO_DEFAULT_PATH)
find_library(<VAR> NAMES name)

Как только одно из вызовов будет успешным, переменная результата будет установлена ​​и сохранена в кеше, чтобы вызов не выполнялся снова.

Итак, в вашем случае вы можете сделать

FIND_LIBRARY(APRUTIL NAMES "aprutil-1"
  PATHS ${PROJECT_SOURCE_DIR}/tools/apr/libs NO_DEFAULT_PATH)